我有这段代码:
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?
答案 0 :(得分:4)
如果您希望在到达时合并所有结果,则可以使用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>
&#13;
答案 1 :(得分:1)