Promise.resolve 的 rxjs 6 中的等价物是什么
What is an equivalent in rxjs6 of Promise.resolve
我正在尝试在异步调用 websql api 后解决问题。
现在我正在 returning 一个 Promise 并且它正在工作。然而,出于某些设计原因,我想用 rxjs6 observables 来做。
你知道如何使用 rxjs 实现相同的行为吗?
请注意 tx.executeSql
和 websqlDatabase.transaction
return 无效,我无权访问这些函数的代码。
提前致谢
return new Promise((resolve, reject) => {
this.websqlDatabase.transaction(tx => {
tx.executeSql(statement, params, (transaction, results) => {
resolve(results);
}, (transaction, error) => {
reject(error);
});
});
});
像处理 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));
我正在尝试在异步调用 websql api 后解决问题。 现在我正在 returning 一个 Promise 并且它正在工作。然而,出于某些设计原因,我想用 rxjs6 observables 来做。 你知道如何使用 rxjs 实现相同的行为吗?
请注意 tx.executeSql
和 websqlDatabase.transaction
return 无效,我无权访问这些函数的代码。
提前致谢
return new Promise((resolve, reject) => {
this.websqlDatabase.transaction(tx => {
tx.executeSql(statement, params, (transaction, results) => {
resolve(results);
}, (transaction, error) => {
reject(error);
});
});
});
像处理 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));