2017-01-31 10 views
2

observer.throw(err)observer.error(err)との違いは何ですか?Observableのobserver.throwとobserver.errorとの違いは何ですか?

私は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'); 
    } 
); 
+0

あなたはどのバージョンのRxJSを使用していますか? – shusson

+0

@shusson "5.0.0-beta.12" –

+0

「innerObservable」はどのように定義されていますか? – shusson

答えて

5

事実、あなたのオブザーバーはSubscriber classのインスタンスです。それはerror()メソッドを持っていますが、throw()メソッドはありません。
Observable.throw()がありますが、それは異なるものです。

  • observer.throw(err)が存在しません。

  • Observable.throw(err)は、単一のerror通知を送信する観測可能です。

  • observer.error()は、典型的には、新たに加入して観察者に(ちょうど.next()又は.complete等)error通知を送信するObservable.create()コールバック内で使用されています。

+0

違いを詳しく教えてください。 –

+0

@ SamanMohamadi少し更新しました。 – martin

0

加入者には何のthrow方法はありません。

あなたがthrowメソッドをコールしようとすると、次のエラーが表示されるはずです。

TypeError: observer.throw is not a function 

は、あなたがどこかにエラーをキャッチされていませんか?

constructObservableあなたが渡す機能には、Observerインターフェイスを実装するSubscriberが渡されます。

関連する問題