2016-08-03 101 views
0

我想使用flatMap(),但它不起作用。Rxjs,Observable鏈接

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 

我在做什麼錯?

回答

2

flatMap的第二個參數是resultSelector,而不是錯誤處理程序。

subscribe()的第二個參數有錯誤處理程序。

所以,你的代碼應該是這樣的:

... 

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

...