我有以下 RxJS 訂閱:
combineLatest([obs1$, obs2$])
.pipe(
filter(val=>!!val[0] && !!val[1]), // no null value on both
switchMap(([val1, val2]) => combineLatest([of(v1), getObs3$(v2)]))
)
.subscribe(([val1, val3]) => { ... });
代碼按預期作業,但感覺很麻煩。我很確定使用 of() 運算子將 switchMap 轉換為 combineLatest 是可以改進的。
注意:為了呼叫getObs3$(v2)我需要首先確定 obs1$ 中的值。此外,我確實需要訂閱中的 val1,因為我稍后會使用它。
有人知道如何優化這個嗎?
uj5u.com熱心網友回復:
一種可能:
combineLatest([obs1$, obs2$]).pipe(
// no null value on both
filter(val=>!!val[0] && !!val[1]),
switchMap(([val1, val2]) => getObs3$(val2).pipe(
map(val3 => [val1,val3])
))
).subscribe(([val1, val3]) => { ... });
這是您經常會看到的一般模式。這里我們將 val3 插入到一個元組中,所以它與 combine latest 沒有太大區別,但是如果它豐富了一個物件(無論嵌套有多深),同樣的模式將適用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/399261.html
標籤:有角的 打字稿 rxjs 反应性 rxjs-pipeable-operators
上一篇:在傳遞給服務的組件上設定變數值
下一篇:從文本字串中提取最大數字
