typescript - Sự khác nhau giữa observer.throw và observer.error trong Observable là gì?
Sự khác nhau giữa observer.throw(err) và observer.error(err) là gì?
Tôi đang sử dụng phiên bản RxJS "5.0.0-beta.12"
var innerObservable = new Observable(observer => {
console.log('Inner observable call failed');
observer.error(new Error('Call failed!'));
})
var outerObservable = new Observable(observer => {
innerObservable.subscribe(
data => {
observer.next(data);
observer.onCompleted();
},
err => {
//observer.throw(err); // `console.error` doesn't get called
observer.error(err); //// `console.error` it's called
}
)
});
outerObservable.subscribe(
next => {
console.log('ok!');
}
, err => {
console.error('error');
}
, () => {
console.log('done');
}
);
Câu trả lời #1
Thực ra, observer của bạn là một thể hiện của Subscriber class. Nó có phương thức error() nhưng không có phương thức throw().
Có Observable.throw() nhưng đó là chuyện khác.
observer.throw(err)không tồn tại.Observable.throw(err)là một observable chỉ phát ra một thông báoerrorduy nhất.observer.error()thường được sử dụng bên trong callbackObservable.create()để gửi một thông báoerror(giống như.next()hoặc.complete) đến observer vừa đăng ký.