2016-04-19 6 views
3

それぞれの値がプロミスを指定した順序と同じ順序で返す配列をどうやって処理するのだろうと思いました。たとえば、のは、私はこのために複数のAjaxコールを呼び出したいとしましょう:How can I use RxJs to hold off any requests for an AJAX call until the previous one resolvesflatMapFirstを使用することを提案:basicaly同じ質問ありますTypeScriptのReactiveX/rxjs 5でexhaustMapを使用する方法

var array = [ 
    'http://example.org', 
    'http://otherexample.org', 
    'http://anotherexample.org', 
]; 

[email protected]を使用しているTypeScriptでAngular2(現時点ではbeta-15)を使用しているため、flatMapFirst has been renamed to exhaustMapが見つかりました。

しかし、この演算子はObservable.tsに記載されていないため、使用できません。 RxJS https://code.angularjs.org/2.0.0-beta.15/Rx.jsのバンドル版でさえ存在しません。

どうして私はそれをどうやって使うのですか?それとも私が必要とするものに他の方法がありますか?そのpackage.jsonにはたくさんのビルドスクリプトがリストされています。

編集:私は、私はReactiveX/rxjsライブラリを使用しています言及する必要があり、ないReactive-Extensions/RxJS

+3

実際には代わりに 'concatMap'を使いたいかもしれません。離れて投げずにすべてのリクエストを処理したいと思うようです。 – Brandon

+1

あなたは、私が必要としている通りに 'concatMap'をしています。 – martin

答えて

3

Operator concatMap()は仕事をした:

import { Observable } from 'rxjs/Observable'; 
import 'rxjs/add/operator/concatMap'; 

var urls = [ 
    'https://httpbin.org/get?1', 
    'https://httpbin.org/get?2', 
    'https://httpbin.org/get?3', 
    'https://httpbin.org/get?4', 
    'https://httpbin.org/get?5', 
];  

Observable.from(this.urls) 
    .concatMap(url => http.get(url)) 
    .subscribe(response => console.log(response.url)) 
; 

これは、コンソールに出力します:あなたの問題の説明に基づいて

https://httpbin.org/get?1 
https://httpbin.org/get?2 
https://httpbin.org/get?3 
https://httpbin.org/get?4 
https://httpbin.org/get?5 
関連する問題