Tìm kiếm trang web

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áo error duy nhất.

  • observer.error() thường được sử dụng bên trong callback Observable.create() để gửi một thông báo error (giống như .next() hoặc .complete) đến observer vừa đăng ký.

Bài viết liên quan