[英]Returning a combineLatest observable from a function with an argument
我不確定我是否正確執行此操作。
我有一個簡單的function
,它有一個我想在combineLatest
observable 中使用的argument
。 然后返回該 observable。
fn(arg) {
return combineLatest([
observable...,
observable...,
]).pipe(
map(() => arg)
);
}
這里的問題是,當該函數被多次調用時,它會創建重復的 observable。
什么是正確的解決方案? 使論點也可觀察? 所以這個函數只被調用一次,但當參數改變時它會返回正確的值。
解決方案不是以這種方式使用Observables
。 將Subject
用於此類事情:
readonly actionSubject = new Subject<unknown>();
...
ngOnInit(): void {
this.actionSubject.pipe(
switchMap(newValue =>
combineLatest([
observable...,
observable...,
]).pipe(map(() => newValue)),
)
).subscribe();
}
...
ngOnDestroy(): void {
this.actionSubject.complete();
}
並代替您的函數用法而不是fn
:
this.actionSubject.next(someNewValue);
這里會發生什么? SwitchMap
將停止您的舊線程並在您每次獲得新值時啟動新線程。 這就是解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.