javascript - 如何使一个可观察对象依赖于另一个可观察对象

标签 javascript typescript rxjs

在构建依赖于相同底层源的 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/

相关文章:

javascript - 显示 id 内的第一张图片

typescript - 将枚举转换为自定义文字数组

javascript - typescript promise 数组在一种情况下正确解决但在另一种情况下不正确

angular - rxjs 管道运算符之后的 HttpInterceptor

rxjs - 如何在rxjs 5中测试使用定时间隔返回可观察值的函数?

javascript - HTML 和 JavaScript - 如何正确保存纯文本

javascript - DOM:我无法访问动态创建的元素。怎么了

javascript - getElementById 结果为 null

javascript - 如何通过 typescript 使用 NativeScript 插件?

javascript - 在 node.js 中需要 RX.js