3 回答

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超7個(gè)贊
combineLatest(observables, resultSelector)
通??梢蕴鎿Q為
combineLatest(observables).pipe(
map(resultSelector)
)
但這是否以相同的方式工作取決于您resultSelector接受的參數(shù)。combineLatest(observables)發(fā)出一個(gè)數(shù)組,當(dāng)你使用已棄用的 resultSelector 時(shí),RxJs 會(huì)自動(dòng)傳播這個(gè)數(shù)組。
return isArray(args) ? fn(...args) : fn(args); // fn is your resultSelector
AsObject.assign根據(jù)您提供的是數(shù)組還是多個(gè)值返回不同的值,您必須手動(dòng)展開數(shù)組。
combineLatest(observables).pipe(
map(items => Object.assign({}, ...items))
)

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊
結(jié)果選擇器只是一個(gè)可用于更改輸出形狀的函數(shù)。
因此,您可以簡(jiǎn)單地省略結(jié)果選擇器參數(shù)并使用地圖來轉(zhuǎn)換形狀:
this.params = combineLatest(
this._route.pathFromRoot.map(route => route.params)
).pipe(
map(Object.assign)
);
結(jié)果選擇器的一個(gè)常見用途(對(duì)我來說)是將數(shù)組作為具有命名屬性的對(duì)象返回,所以像這樣:
// 舊方法
myObs$ = combineLatest(
[src1$, src2$, src3$],
([src1, src2, src3]) => ({src1, src2, src3})
);
// 新方法
myObs$ = combineLatest(src1$, src2$, src3$)
.pipe(
map(([src1, src2, src3]) => ({src1, src2, src3}))
);

TA貢獻(xiàn)2019條經(jīng)驗(yàn) 獲得超9個(gè)贊
pipe
結(jié)果并改用map
運(yùn)算符,例如:
combineLatest(this._route.pathFromRoot.map(route?=>?route.params)).pipe(? ?map(Object.assign) );
此外,不確定代碼的意圖,因?yàn)樗坪跽谡{(diào)用Object.assign
一個(gè)新的數(shù)組引用,不確定為什么這是必要的,但這并不完全相關(guān)。
添加回答
舉報(bào)