Когда я создаю наблюдаемое с нуля и получаю ошибку наблюдателя, затем завершаю, завершенная часть подписки никогда не вызывается.
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
Почему он не завершается при возникновении ошибки?