例如:
const x = Rx.Observable.create((observer) => {
console.log('in x');
observer.onNext('x');
})
const y = Rx.Observable.create((observer) => {
console.log('in y');
observer.onNext('y');
})
const source = Rx.Observable
.range(1, 2)
.flatMap((item) => {
if(item === 1){
return x;
}else{
return y;
}
})
.flatMap(y)
const subscription = source.subscribe(
(data) => {
console.log('Next: ' + data);
}
);
从 1 到 2 ,希望等于 1 的执行顺序是 x -> y , 而等于 2 的时候只执行 y
这样需要怎么修改呢?
merge
不一定能保证y
在x
后面,如果他们是异步的话。如果一定要保证
x
和y
的顺序,可以使用concat
。但前提是
x
和y
要明确地定义什么时候结束,所以需要调用complete
方法: