我对RxJS和FRP不太熟悉。 我想将我的ExpressJS应用程序中现有的Promise链转换为Observable进行练习。 我知道这可能不是最好的例子,但也许有人可以帮助解决问题。
我的目标:
- 我有两个Promise - prom1和prom2
- 我想要在 prom2 运行之前先运行 prom1
- 如果 prom1 发送 reject(err),我想在它开始之前取消 prom2。
- 我希望 prom1 返回的错误消息能够在观察者的 onError 方法中使用。
var prom1 = new Promise(function(resolve, reject) {
if (true) {
reject('reason');
}
resolve(true);
});
var prom2 = new Promise(function(resolve, reject) {
resolve(true);
});
// What do I do here? This is what I've tried so far...
var source1 = Rx.Observable.fromPromise(prom1);
var source2 = source1.flatMap(Rx.Observable.fromPromise(prom2));
var subscription = source2.subscribe(
function (result) { console.log('Next: ' + result); },
// I want my error 'reason' to be made available here
function (err) { console.log('Error: ' + err); },
function () { console.log('Completed'); });
flatMap
确实需要一个 回调函数,而不是一个可观察对象 (或者 promise) ,就像then
方法一样。 - Bergi