2017-01-14 37 views
0

我在Angular 2最終版本中對observable(http.get的結果)使用訂閱方法。雖然subscribe方法的第一個參數是從後端獲取數據的函數,但第二個參數是在錯誤時執行的函數(如狀態http代碼404),但我不明白第三個參數/函數的含義。在http.get observable上訂閱方法:第三個參數是什麼?

希望它執行總是當請求已經結束(成功或錯誤),我刪除/停止加載它的指示器,但第三個函數不會錯誤調用。

回答

0

當observable完成時,將調用第三個回調函數。這意味着觀察者不會再發射任何事件。 當前由Http.xxx調用返回的可觀測量僅發出一個單一事件並在之後完成,因此第一個和第三個回調被同時調用(一個接一個),但Http可能更改爲最終發出多個事件,然後每個事件都會調用第一個回調,第三個回調在最後一個事件之後被調用一次。

+0

所以我能得到其中之一:1,3或2,3,但是3被稱爲無論如何? –

+1

在最後一次事件之後,應該總是調用2或3中的一個。在成功的情況下,調用3,如果發生錯誤,則只調用2(但不是3)。 –

+0

所以我必須停止加載1和2中的指標。我怎樣才能消除這種重複? –

2

每個序列的第三個參數是完整的處理程序。它被調用時沒有參數,只是通知完成的序列。

Observable.from([1,3]).subscribe(
    (v => console.log('value: ', v)), 
    (e => console.log('error: ', e)), 
    (() => console.log('the sequence completed!')) 

將打印:

值:1

值:2

的順序完成

相關問題