【发布时间】:2016-02-20 10:04:00
【问题描述】:
当我从头开始创建一个可观察对象,并出现观察者错误,然后完成时,订阅的完成部分永远不会被调用。
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,则 observable 会正确完成:
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
发生错误时为什么不完成?
【问题讨论】:
标签: javascript angular rxjs reactive-programming