Promise.resolve的rxjs6中的等价物是什么

问题描述 投票:0回答:1

我试图在对websql api进行异步调用后解决。现在我回来了一个Promise,它正在发挥作用。但是,由于某些设计原因,我想用rxjs6 observables来做。你知道如何与rxjs有相同的行为吗?

请注意tx.executeSqlwebsqlDatabase.transaction返回void,我无法访问这些函数的代码。

提前致谢

    return new Promise((resolve, reject) => {
        this.websqlDatabase.transaction(tx => {
          tx.executeSql(statement, params, (transaction, results) => {
            resolve(results);
          }, (transaction, error) => {
            reject(error);
          });
        });
    });
observable es6-promise web-sql rxjs6
1个回答
1
投票

创建一个新的observable,就像使用promise一样,然后调用observable.next(<var>)将结果传递给订阅对象。确保您还调用observable.complete()通知观察者管道可以关闭。

此代码是与上述代码等效的rxjs:

import { Observable } from 'rxjs';

const observable = new Observable(observer => {
    this.websqlDatabase.transaction(tx => {
        tx.executeSql(statement, params, (transaction, results) => {
            observable.next(results);
            observer.complete();
        }, (transaction, error) => {
            observable.error(error);
        });
     });
});

observable.subscribe(value => console.log(value));
© www.soinside.com 2019 - 2024. All rights reserved.