在构建依赖于相同基础源的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
->却毫无帮助。
复制
这是使用打字稿和rxjs进行的堆栈炸弹袭击link。
答案 0 :(得分:4)
您可以先将observable1
的排放物传递给observable2
,然后使其异步:
const observable2 = observable1.pipe(
observeOn(asyncScheduler),
map(() => 'observable2')
);
您的更新演示:https://stackblitz.com/edit/rxjs-xqcyqk?file=index.ts