簡體   English   中英

從帶有參數的函數返回一個 combineLatest observable

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM