2016-08-08 67 views
2

這就是我現在做的,我不知道是否有更好的方法我需要幫助理解RxJx訂閱語法

this.dataService.subscribe(
    data => this.data = data, 
    error => alert('Something went wrong'), 
    () => this.doSomethingOnCompletion()); 

如果我沒抓數據,但是,我可能只是改變第一的三項功能:

() => null, 

documentation for rxjs 4.x對我來說這個問題還沒有很好的回答。更難解釋的是Version 5.x

那麼,什麼是判決?當我不需要做任何事情而不是觸發某些事情發生時,以下錯誤是否存在?

this.dataService.subscribe(
    () => null, 
    error => alert('Boom.'), 
    () => this.doSomethingOnCompletion()); 

如果我不需要完成某件事情,那我就把這部分留下來。如果我只想檢查錯誤而沒有其他事情呢?

回答

4

RxJS 4如果您只需要errors,那麼您可以使用僅處理錯誤的subscribeOnError方法。

你也可以使用subscribe方法,但你只需要爲你不需要的處理程序傳遞一個空值,你不必傳遞你自己的noop。

this.dataService.subscribe(
    null, 
    error => alert('Something went wrong')); 

RxJS 5,你可以通過一個所謂的PartialObserver

this.dataService.subscribe({ 
    error: error => alert('Boom.'), 
    complete:() => this.doSomethingOnCompletion() 
}) 
+0

對此,PartialObserver,正是我一直在尋找,但是,說實話,我不看去理解在源代碼中Observer.ts將如何理解哪個鍵:值對到哪個接口。今天早上我會玩這個。 :) – wolfhoundjesse

+0

所以它看起來像我一直在做事情的方式就好了。這就像使用可選參數調用函數一樣。如果您想要第二個或第三個可選參數,則必須將null傳遞給第一個參數。 就Angular 2而言,我們從http服務獲取的Observable並不典型,因此它並不真正採用PartialObserver方法。 感謝您的指導! – wolfhoundjesse