编程语言
首页 > 编程语言> > javascript – 组合Observables – 等待所有可观察者发射

javascript – 组合Observables – 等待所有可观察者发射

作者:互联网

我有这个代码:

let $obs = Rx.Observable.merge(
    this.obsEnqueue,
    Rx.Observable.timer(2000)
);

但这并不是我想要的 – 我想要做的就是等到两个事件都触发(来自this.obsEnqueue的事件和来自Rx.Observable.timer()的事件).

merge很可能会创建一个新的Observable,它将在传入所有可观察对象的第一个事件时触发.我想创建一个新的observable,它将在所有可观察的传入被触发后触发.

更普遍的是:

let $obs = Rx.Observable.X(
    Rx.Observable,    // wait
    Rx.Observable,    // until
    Rx.Observable,    // all of these
    ...
    Rx.Observable     // fire the next event
);

我怎样才能做到这一点?什么是X?

解决方法:

如果要在到达时合并所有结果,可以使用zip

const { Observable } = Rx;

const result = Observable.zip(
  Observable.of('data1'),
  Observable.of(true).delay(500),
  Observable.timer(1000)
);

result.forEach(console.log); // after 1000ms: ['data1', true, 0]
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.0.1/Rx.min.js"></script>

标签:javascript,node-js,rxjs5
来源: https://codeday.me/bug/20190828/1754442.html