RxJS5可以处理包装*和*解包值的运算符?

RxJS5可以处理包装*和*解包值的运算符?

问题描述:

有了承诺,如果你这样做:RxJS5可以处理包装*和*解包值的运算符?

Promise.resolve(p).then(function(){ 
     return 5; 
    }) 
    .then(function(val){ 
     return db.find(); // promise 
    }); 

我们可以看到,然后承诺运营商可以处理任何返回的值,它只是对返回的结果调用Promise.resolve(),并处理它是否是一个承诺或不。

但是,使用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或模式?

据我所知,没有运营商需要任何东西,只是作品。 MergeMap/switchMap/concatMap将与array/promises/observables一起作为返回值并将它们转换为Observable流。但不符合常规值。

+0

是的我其实并不认为这是一笔交易,只是为了能够处理Observable或普通价值的某个呼叫而半方便;如果你真的想要,你可以创建一个既能处理我也能处理的操作符 – Olegzandr