簡體   English   中英

RxJS-可觀察的模塊-拋出未定義

[英]RxJS - Observable Modules - throw undefined

我試圖用簡單的代碼在可觀察范圍內拋出錯誤:

return Observable.create((observer) => {
  observer.throw(new Error('Test'));
});

但是由於某種原因, throw是不確定的。 我不知道為什么在我班級的最前面有以下輸入:

import 'rxjs/observable/throw';

我也嘗試過:

import 'rxjs/Observable/throw';

和:

import 'rxjs/add/observable/throw';

但是沒有人在工作嗎? 我錯過了一個把戲嗎?

我正在將rxjs@5.0.0-beta.6與angular@2.0.0-rc.4結合用於Ionic 2。

觀察者(在RxJS v5中已重命名為“訂閱者”,FYI)沒有稱為throw()的方法。 您正在混合使用Observables(定義序列和這些序列上的運算符)和Subscriber / Observers(僅接收來自Observable的下一條/錯誤/完成消息)。

您想要的是一個Observable,它僅發出一個錯誤對象。 然后,任何訂閱它的訂戶/觀察者將收到一個.error()通知。 因此,不要使用Observable.create() ,而要使用Observable.throw(new Error('Test'))

與使用Observable.create(observer => ...)和調用observer.error(...) ,此方法還更健壯,因為可以保證生成的Observable遵守Rx合同。 如果使用.create() ,則必須手動執行類似操作,確保在錯誤發生后不再發出進一步的通知,確保Observable的所有后續訂閱者都立即收到錯誤通知,等等。使用Observable.throw(...) ,這一切都會自動為您解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM