我需要執行從陣列創建的 observables。條件是下一個 observable 應該等到前一個 observable 完成。提前致謝 :-)。
export class AppComponent{
arr: number[] = [5, 4, 1, 2, 3];
fetchWithObs() {
from(this.arr)
.pipe(
map((value) => {
return this.getData(value);
})
)
.subscribe((data) => {
console.log(data);
/**
* The expoected output should be
* 5 completed
* 4 completed
* 1 completed
* 2 completed
* 3 completed
*/
});
}
getData(p: number) {
return new Observable<string>((s) => {
setTimeout(() => {
s.next(`${p} completed`);
s.complete();
}, p * 1000);
});
}
}
uj5u.com熱心網友回復:
試試concatMap。
export class AppComponent{
arr: number[] = [5, 4, 1, 2, 3];
fetchWithObs() {
from(this.arr)
.pipe(
concatMap(this.getData)
)
.subscribe(console.log);
}
getData(p: number) {
return new Observable<string>((s) => {
setTimeout(() => {
s.next(`${p} completed`);
s.complete();
}, p * 1000);
});
}
}
Stackblitz:https ://stackblitz.com/edit/typescript-axx8gf?file=index.ts
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/496491.html
標籤:javascript 打字稿 rxjs
上一篇:等待組件變數由訂閱設定
下一篇:無法獲得低于輸入數字的倍數總和?
