我正在尝试在对websql api的异步调用之后进行解析。现在,我返回了一个承诺,它正在工作。然而,出于一些设计上的原因,我想使用rxjs6观察值。您知道如何使用rxjs实现相同的行为吗?
请考虑到tx.executeSql和websqlDatabase.transaction返回空值,而我没有权限访问这些函数的代码。
提前感谢
return new Promise((resolve, reject) => {
this.websqlDatabase.transaction(tx => {
tx.executeSql(statement, params, (transaction, results) => {
resolve(results);
}, (transaction, error) => {
reject(error);
});
});
});发布于 2019-04-27 07:06:49
创建一个新的observable,就像对promise所做的那样,然后调用observable.next(<var>)将结果通过管道传递给订阅的对象。确保您还调用了observable.complete()来通知observable可以关闭管道。
此代码是与上述代码等效的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));https://stackoverflow.com/questions/55875801
复制相似问题