在构建依赖于相同基础源的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$
主题发出时,observable2
首先发出? ♂️我尝试在
mergeMap
上使用observable2
运算符,使其“依赖” observable1
->却毫无帮助。重现
这是带有 typescript 和rxjs的stackblitz的link。
最佳答案
您可以将observable1
中的发射异步化,然后再将它们传递给observable2
:
const observable2 = observable1.pipe(
observeOn(asyncScheduler),
map(() => 'observable2')
);
您更新的演示:https://stackblitz.com/edit/rxjs-xqcyqk?file=index.ts