Rxjs,Observable链接

时间:2016-08-03 10:15:52

标签: rxjs

我正在尝试使用flatMap(),但它不起作用。

var source1 = Rx.Observable.create((observer) => {
    setTimeout(() => {
        observer.onNext(1);
        observer.onCompleted();
    }, 1000);
});

var source2 = Rx.Observable.create((observer) => {
    setTimeout(() => {
        observer.onNext(2);
        observer.onCompleted();
    }, 1000);
});

var test = source1.flatMap((result) => {
    console.log('flat: ' + result);
    return source2;
}, e => console.log(`onError1: ${e}`)); // onError1: 1

test.subscribe((result) => {
    console.log('subscribe: ' + result);
}, e => console.log(`onError2: ${e}`)); // onError2: undefined

我做错了什么?

1 个答案:

答案 0 :(得分:2)

flatMap的第二个参数是resultSelector,而不是错误处理程序。

subscribe()的第二个参数有错误处理程序。

所以你的代码应该是这样的:

...

var test = source1.flatMap((result) => {
    console.log('flat: ' + result);
    return source2;
});

...