在第一个可观察对象发出后,在第二个可观察对象的第一次发出时发出

Emit on first emit of second observable after first observable emits

我有 2 个 Observable,ab。我想像这样组合它们:

a: ---x---------x-------x------|
b: ------x-x-x----x-x-x---x-x--|

o: ------x--------x-------x----|

也就是说,我希望结果 Observable 在 b 的第一次发射时发射,紧接在 a 发射之后。

我正在使用 reactivex/rxjs,但仅提供概念性提示就足够了。提前致谢!

我们可以 flatMap 覆盖 a$ Observable 和 return 一个新的 Observable,它发出我们从 b$ 获得的第一个项目。

注意:b$ 需要是一个热 Observable。如果这个术语不熟悉,请阅读 hot/cold Observables:https://github.com/Reactive-Extensions/RxJS/blob/master/doc/gettingstarted/creating.md#cold-vs-hot-observables

const firstBAfterA$ = a$.flatMap(x => {
  return b$.first();
});