需要從多個 subscribe 獲得更新所需參數

假如我需要從多個 subscribe 來獲得更新所需的參數,該如何在最後面插入這個 function ?

例子:
component.ts

A;
B;
ngOnInit() {
    this.route.params.subscribe((routeParams) => {
        A = routeParams.A;
        ...

       // 在 A 和 B 都被更新後執行這個 function
       A_heavy_function()
    });

    this.route.queryParamMap.subscribe((param) => {
        B = param.get(B);
        ...

       // 在 A 和 B 都被更新後執行這個 function
       A_heavy_function()
    });
}

依據網址會有下列 3 種情況:

  • 路由參數改變
  • query 參數改變
  • 路由 & query 都改變

因為最後面這個 function 需要花較長時間執行,因此希望避免重複執行
不知道最後一種情況時,能不能在 A 和 B 都更新完後只執行一次就好,而不用在 2 個 subscribe 裡將這個 function 都呼叫一次 ?

如果需要從兩個 observable 取值,那可以透過結合的方式來處理,例如 combinLatest 這一個 observable

https://rxjs-cn.github.io/learn-rxjs-operators/operators/combination/combinelatest.html

當然還有其他類似的,就依你的需求去使用了

combineLatest 是所有 observable 都發出過值,才會啟動
若一開始只有一個 observable 發出值也要啟動呢 ?

都給予初始值就可以了,startWith