2017-01-09 6 views
0

、あなたがこれを行う場合:ラップされた*値と*ラッピングされていない値を処理できる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オペレータまたはパターンがありますか?

答えて

1

私の知る限りでは、何かを取り、ちょうど動作する演算子はありません。 MergeMap/switchMap/concatMapはarray/promises/observablesを戻り値として扱い、Observableストリームに変換します。しかし、通常の値ではありません。

+0

私は実際にはそれほど大きな取引ではないと思っています。Observableまたはplainの値を扱うことができるようにするためには、特定の呼び出しに対しては半便利です。もしあなたが本当に欲しかったのであれば、私は両方を扱った演算子を作成することができました – Olegzandr

関連する問題