【发布时间】:2017-05-24 04:48:28
【问题描述】:
使用 Promises,如果你这样做:
Promise.resolve(p).then(function(){
return 5;
})
.then(function(val){
return db.find(); // promise
});
我们可以看到,promise 上的 then 操作符可以处理任何返回值,它只是在返回结果上调用 Promise.resolve() 并处理它是否是一个 promise。
但是,使用 RxJS5,我发现很难找到可以做类似事情的运算符。我收到很多错误:
TypeError: You provided x where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.
at Object.subscribeToResult (/home/oleg/WebstormProjects/oresoftware/observable-persistent-queue/node_modules/rxjs/util/subscribeToResult.js:73:27)
at MergeAllSubscriber._next (/home/oleg/WebstormProjects/oresoftware/observable-persistent-queue/node_modules/rxjs/operator/mergeAll.js:85:42
例如,用这个:
Rx.Observable.range(1,9)
.flatMap(function(){
return Rx.Observable.timer(4)
})
.concatAll() // this will throw the error
.subscribe();
是否有 RxJS 运算符或运算符模式可以处理任何值并像使用 Promises 一样解包?
【问题讨论】:
标签: rxjs5 angular2-observables