当我从头开始创建一个可观察对象,并让观察者出错,然后完成时,订阅的完成部分永远不会被调用.
var observer = Rx.Observable.create(function(observer){
observer.onError(new Error('no!'));
observer.onCompleted();
})
observer.subscribe(
function(x) { console.log('succeeded with ' + x ) },
function(x) { console.log('errored with ' + x ) },
function() { console.log('completed') }
)
输出为:
errored with Error: no!
我希望是:
errored with Error: no!
completed
如果我将代码更改为调用onNext而不是onError,则可观察对象将正确完成:
var observer = Rx.Observable.create(function(observer){
observer.onNext('Hi!');
observer.onCompleted();
})
observer.subscribe(
function(x) { console.log('succeeded with ' + x ) },
function(x) { console.log('errored with ' + x ) },
function() { console.log('completed') }
)
我得到了预期的输出:
succeeded with Hi!
completed
为什么在发生错误时没有完成?