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>
上一篇:CSDN论坛 > Delphi > VCL组件开发及应用 DBLookupComboBox用法


下一篇:Java语言编程 - 搭建Java开发环境