Búsqueda de sitios web

typescript - ¿Cuál es la diferencia entre observer.throw y observer.error en Observable?


¿Cuál es la diferencia entre observer.throw(err) y observer.error(err) ?

Estoy usando la versión de 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');
    }
);

Respuesta #1

De hecho, tu observador es una instancia de la clase Subscriber. Tiene el método error() pero no hay un método throw().
Existe Observable.throw() pero eso es algo diferente.

  • observer.throw(err) no existe.

  • Observable.throw(err) es un observable que emite solo una notificación de error.

  • observer.error() se utiliza normalmente dentro del callback de Observable.create() para enviar una notificación de error (igual que .next() o .complete) al observador que se suscribió recientemente.

Artículos relacionados