为什么这些嵌套的Observable只被调用一次?

时间:2019-12-30 23:51:30

标签: angular typescript rxjs

我有一系列类似这样的可观察对象:

this.subscription = combineLatest(
  [1$, ..., m$]
).pipe(
  filter((latest: [boolean, ..., number]) => {
    const [1, ..., m] = latest;
    const shouldContinue: boolean = <some logic>;
    return shouldContinue;
  }),
  concatMap((latest: [boolean, ..., number]) => {
    const [1, ..., m] = latest;

    // Hits here first time, then never again

    return <method that returns an Observable>().pipe(concatMap((result: [boolean, ..., number]) => {
      const [2, ..., n] = result;

      // Hits here first time, then never again

      return <another method that returns an Observable>();
    }));
  })
).subscribe((result: [boolean, ..., number]) => {
  const [3, ..., o] = result;

  // Hits here first time, then never again

  <some method>();
});

第一次将shouldContinue设置为true时,其余函数将一直被调用到订阅中。

但是第二次将shouldContinue设置为true(我可以在调试器中看到它的设置),代码再也不会移入concatMap中了。

我在这里想念什么?

1 个答案:

答案 0 :(得分:0)

结果证明,我需要使内部可观察对象变热-添加share()解决了这个问题。