在构建依赖于相同底层源的 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));
预期结果
observable1
observable2
实际结果
observable2
observable1
问题是当filters$
subject 发出时,observable2
先发出? 🤷🏻♂️
我曾尝试在 observable2
上使用 mergeMap
运算符,使其“依赖”于 observable1
--> 但无济于事全部。
复制
这是一个link到使用 typescript 和 rxjs 的 stackblitz。
最佳答案
在将它们传递给 observable2
之前,您可以使 observable1
的发射异步:
const observable2 = observable1.pipe(
observeOn(asyncScheduler),
map(() => 'observable2')
);
您更新的演示:https://stackblitz.com/edit/rxjs-xqcyqk?file=index.ts
关于javascript - 如何使一个可观察对象依赖于另一个可观察对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58096757/