2017-11-27 4 views
0

私は次のような場合があります。連鎖モードでURLの配列を取得する

私はフェッチしたいが同時にできない「URL」パスの配列を持っています。

最初のURLを取得し、終了したら(結果に関係なく)2番目などをフェッチします。結果を1つのObservableで一連のイベントとして表示したいとします。

これを行うことはできますか?そしてどうやって? 私の苦労: 1. mergeMapingはURLを同時に起動します 2.上記の1を実行しても、私はこの構築を 'for'ループの中に置くことができません。

私は以下を試しましたが、最後のURLだけが取得されます。

const myEvents: number[] = [1, 2, 3, 4, 5]; 
let finalobs = this.http.get(`https://jsonplaceholder.typicode.com/posts/${1}`); 
for (let i = 1; i < myEvents.length; i++) { 
    finalobs = finalobs.pipe(
    mergeMap(evt => { 
     console.log(`Getting: ${i}`); 
     return this.http.get(`https://jsonplaceholder.typicode.com/posts/${myEvents[i]}`); 
    }) 
); 
} 
finalobs.subscribe(evt => console.log(evt)); 

は、あなたが観測のアレイ上の連続的なサブスクリプションを達成しようとしている、事前に

+0

flatMapは –

+0

おかげAnkitを使用することができ、以下の例を考えてみましょう。実際、RxJSは、flatMapと同じmergeMapを持っています。 – killerchip0

答えて

1
Rx.Observable.from([1, 2, 3, 4, 5]) 
    .concatMap(event => this.http.get(`https://jsonplaceholder.typicode.com/posts/${event}`)) 
    .subscribe(console.log); 
1

、ありがとうございました。 rxjs concatこれを達成するのに役立ちます。

var observables = []; 
Observable 
    .concat(...observables) 
    .subscribe((result) => { /* do something with the result */}, 
       (error) => { /* do something with the error response */ }); 
関連する問題