[英]Angular 2 & RxJS: map an array using Rx Observable
我有一個數字數組,像這樣:[1、2、3]和HTTP服務,它具有按數字按如下方式加載數據對象的功能:
function get(id: number): Observable<object>
如何將我的原始數字數組映射到保留元素順序的對象數組?
您可以使用concatMap
運算符。
const Observable = Rx.Observable;
function mockHttpRequest(i) {
return Observable.of(i).delay(500);
}
Observable.from([1, 2, 3])
.concatMap(i => mockHttpRequest(i))
.subscribe(data => console.log(data));
這模擬了多個HTTP請求,每個HTTP請求被延遲500ms。 運算符concatMap()
保證Observable會按順序調用。
觀看現場演示: https : //jsbin.com/subuxo/edit?js,console
感謝@martin我找到了這個解決方案:
const myPromise = val => new Promise(resolve => setTimeout(() => resolve(`Promise Resolved: ${val}`),
Math.round(Math.random() * 1000 + 1000)))
const queue = Rx.Observable.of([1,2,3,4,5]);
const result = queue
.mergeMap(q => Rx.Observable.forkJoin(...q.map(myPromise)));
const subscribeTwo = result.subscribe(val => console.log(val));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.