结合可观测量
我有这样的代码:
let $obs = Rx.Observable.merge(
this.obsEnqueue,
Rx.Observable.timer(2000)
);
但这不是做要我要 - 要我想要做的就是等待,直到两个事件触发(从this.obsEnqueue
事件和Rx.Observable.timer()
事件)。
merge
将最有可能创造一个新的可观测时,第一个事件在被传递的所有观测情况,将闪光。我想创建一个新的观察到的,将火毕竟观察到在已经解雇过去了。
所以更普遍:
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/ajax/libs/rxjs/5.0.1/Rx.min.js"></script>
结合可观测量
我有这样的代码:
let $obs = Rx.Observable.merge(
this.obsEnqueue,
Rx.Observable.timer(2000)
);
但这不是做要我要 - 要我想要做的就是等待,直到两个事件触发(从this.obsEnqueue
事件和Rx.Observable.timer()
事件)。
merge
将最有可能创造一个新的可观测时,第一个事件在被传递的所有观测情况,将闪光。我想创建一个新的观察到的,将火毕竟观察到在已经解雇过去了。
所以更普遍:
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/ajax/libs/rxjs/5.0.1/Rx.min.js"></script>