我如何使一个可观察物取决于另一个可观察物

Dau*_*eDK 6 javascript rxjs typescript

在构建依赖于相同基础源的2个可观察对象时,我在理解事件顺序时遇到问题。希望您不仅可以为我提供有效的解决方案,还可以解释为什么我在下面得到结果。我的目标是observable2永远不会散发出来observable1

const filters$ = new Subject();

const observable1 = filters$.pipe(
  map(() => 'obersvable1')
);

const observable2 = observable1.pipe(
  map(() => 'observable2')
)

observable2.subscribe((v) => console.log(v));
observable1.subscribe((v) => console.log(v));
Run Code Online (Sandbox Code Playgroud)

预期结果

observable1
observable2
Run Code Online (Sandbox Code Playgroud)

实际结果

observable2
observable1
Run Code Online (Sandbox Code Playgroud)

问题是当filters$主体发射时,observable2首先发射????

我尝试在mergeMap上使用运算符observable2,以使其“依赖” observable1->,但完全没有帮助。

复制

这是使用typescript和rxjs进行stackblitz 的链接

mar*_*tin 4

您可以observable1在将其传递给之前进行异步排放observable2

const observable2 = observable1.pipe(
  observeOn(asyncScheduler),
  map(() => 'observable2')
);
Run Code Online (Sandbox Code Playgroud)

您更新的演示:https://stackblitz.com/edit/rxjs-xqcyqk?file =index.ts