2017-03-02 4 views
1

ペイロードの配列があります。それぞれに非同期アクションをいくつか実行してから、サーバーに送信します。その後、RxJSを使用して一度に1つずつサーバーに要求を送信する

Rx.Observable.from(payloads) 
    .flatMap(item => ... do something A something async, return modified payload) 
    .flatMap(item => ... do something B) 
    .flatMap(item => ... post to server) 
    .subscribe(); 

これは動作します....

しかし、すべてを一度に各ペイロードのためにB、その後、一斉に各ペイロードのためにやっているようだ。私はこのようにそれをやろうとしています各ペイロードを一度に投稿する。

潜在的に何千ものペイロードのリストがあります。一度に1つずつ、ペイロードを通過する方法はありますか?

+0

http://stackoverflow.com/documentation/rxjs/8247/common-recipes/28035/sending-multiple-sequential-http-requests#t=201703030657084292099 – martin

答えて

2

彼らはそれぞれのペイロードのA-> B-> Cを行うことが必要な場合:以前の排出量は次の開始前に完了するまで

Rx.Observable.from(payloads) 
    .concatMap(payload => doA()) 
    .concatMap(resA => doB()) 
    .concatMap(resB => doC()) 
    .subscribe(console.log) 

concatMapをお待ちしております。これにより、並行性が制限されます。

+1

ところで、あなたは入れ子にする必要はありません 'concatMapを参照してください。 () 'が呼び出す... – martin

+0

いいです!まだ眠いうちに質問に答えてはならない –

関連する問題