Stories

Detail Return Return

rxjs Observable 設計原理背後的 Pull 和 Push 思路 - Stories Detail

Observables 顧名思義,是可以被觀察的事務。在 Rxjs 的上下文裏,Observable 會隨着時間的推移,在某個時間點產生數據。

Observables 可以:

  • 不停地(永遠)產生值,比如 interval 操作符。
  • 可以一次性生產價值,然後進入 complete 狀態。
  • 可能會產生錯誤,然後進入 complete 狀態。

Observable 是一種異步事件的實現利器,例如單個操作(HTTP 請求)或多個可重複的操作(例如光標移動或按鍵)。

響應式編程(Reactive Programming)是一種構建應用程序的方法,它對應用程序內發生的變化做出響應,而不是編寫應用程序來處理這些變化。後者是 Imperative Programming 即命令式編程的典型特徵。

要理解 Observable 的設計原理,我們首先有必要了解典型的生產者和消費者通信的幾種模式。

拉取(Pull)和推送(Push)模型定義了數據生產者如何與數據消費者合作。

Pull

拉取:在拉取模型的情況下,消費者決定何時使用或請求數據。 當我們創建一個返回值的函數時,該函數就是生產者。 但是,在調用該函數(或要求提供數據)之前,該函數不會產生任何內容。

調用函數的代碼是消費者。 此調用按照消費者的需求被觸發。 消費者決定傳播策略。

Push

推送:生產者主導推模型。 任何使用數據的人都不知道數據何時到達。 他們知道數據到達時要做的應用邏輯,但消費者不決定數據何時到達。

Promise 是推送模型的經典示例。 當任務完成時,promise 會產生數據或錯誤。 傳遞給 Promise 的回調函數永遠不會知道 Promise 何時完成,它只負責數據成功達到或者發生錯誤時,應該執行什麼樣的邏輯。

user avatar populus Avatar mandy_597086799bac8 Avatar bianchengdandan Avatar xiaolanbenlan Avatar gqkmiss Avatar beishangdeyadan Avatar savokiss Avatar ruyadehuangdou Avatar lixiaogui Avatar
Favorites 9 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.