2017-07-28 64 views
1

我正在通過angular.io文檔和一些其他材料試圖加速與角度。有一件事還沒有完全沉浸在我的腦海中,那就是觀察者。我讀這
隨着時間的推移,可觀察數據會返回數據嗎?

Observable幫助我們管理異步數據。您可以將Observables視爲一系列項目,隨着時間的推移異步到達。 從這裏https://www.tektutorialshub.com/angular-http-tutorial-with-rxjs-observables/

我明白sync vs async,但這聽起來好像有可能是一些數組項目在不同的時間到達?是這種情況,還是允許調用線程繼續執行,而正在被觀察的線程允許完成處理,然後在準備好的時候繼續它的停止位置?

+0

[RxJava Observable「Iteration」如何工作?](https://stackoverflow.com/questions/29711347/how-does-rxjava-observable-iteration-work) – ChrisG

回答

3

是的,觀察物有些物品可能在不同的時間到達。例如,假設您正在觀察輸入元素值的變化。用戶可以鍵入,暫停和輸入更多。所以物品在不同的時間到達。

但是,當使用Observable和Http時,Observable是「完成的」。這意味着它只從後端得到一個「一個」可觀察條目的響應。然後它可以將這一個響應映射到一個數據數組中。

例如,假設您通過Http檢索一組產品。您將獲得整個一組產品作爲一個響應對象,然後一個可觀察序列中可觀察。該響應可以被映射到適當的產品對象數組中。但Observable仍然認爲它是「一件」事情。

有意義嗎?

+0

DeborahK - 愛你的Angular課程Pluralsight!它是一個很大的幫助 – bitshift

+1

很高興聽到!謝謝!我正在更新它以使用CLI和新版本4.3 HttpClientModule和HttpClient服務。 – DeborahK

2

Observables RxJs可以觀察到不同時間到達的物品。您可以觀察諸如擊鍵之類的事情,在這些事件發生時物品將繼續流入。您也可以觀察單個AJAX請求,您只能獲得1個響應。

有與觀測量做出一些區分:


Hot vs. Cold Observables

總之,用冷水觀測,當你訂閱了他們,你是觸發操作。一個例子是一個AJAX請求。在觀察者訂閱之前,請求不會觸發。


有限觀測量:

觀測量將或者有限的或無限的。有限的可觀察(如AJAX請求)將在完成後調用訂閱的完整回調。其他觀察者,如觀察keyDown事件,只有在取消訂閱時纔會結束。每次發生keydown事件時,這些將繼續調用onNext回調。

相關問題