通俗解釋什麼是響應式程式設計?
響應式程式設計(Reactive Programming 或稱反應式程式設計)是一種流行的程式設計方法,編寫程式碼是基於對變化的反應。它的靈感來自於我們的日常生活,也即我們如何採取行動以及與他人溝通。
我們在執行日常生活活動時,我們會盡可能多工,但大腦無法處理多工,不管我們如何努力去做。我們人類實現多工的唯一辦法是在時間線上在任務之間切換。事實上,我們總是切換任務,即使我們沒有意識到它。
例如,要執行一個任務:在星巴克喝一杯咖啡飲料,你需要發出一個命令,等待它準備好,然後接受你的飲料。當你在等待的時候,你很可能會找到別的事情做。這是最簡單的執行任務的反應(響應)形式,你會在你等待來自咖啡師的“響應”時做別的事情,當你的咖啡已經準備好後,會叫你的名字時。
響應程式設計能夠簡化程式設計,它依賴於事件,程式碼執行的順序不是程式碼行的順序,而是和一個以上的事件有關,這些事件發生是以隨著時間的推移的序列。我們把這一系列事件稱為“流”。
何為事件?例如,你知道某個名人總是在傳送有趣微博,每次他推發一條微博我們可以稱之為一個“事件”。如果你看看這位名人微博系列,你會發現其實是一個隨著時間的推移(一系列的事件)發生的一序列的“事件”。
響應式程式設計就是因為我們得“響應”這些事件而得以命名。例如,想象一下,你在等待某人傳送一個很酷商品的促銷碼,當這條促銷碼發出時,你會立即響應,去購買這個很酷的商品。這正是什麼響應性程式設計的原理。
為了能夠對事件作出反應,我們必須要監督它。 如果我們沒有監聽的情況下,我們永遠不會知道什麼時候它會有事件反應。 在微博上,可以設定監測微博的事件,我們遵循簡併設定我們的電話,每次她發微博事件時就會第一時間通知我們。
在響應式程式設計中,監視事件被稱為偵聽或訂閱該事件。 這一點其實很相似訂閱簡訊。 當您訂閱Web上釋出的新聞,您得提供您的電子郵件地址,每次有新的時事通訊時候,您的電子郵件地址將得到該新聞的一個副本。 同樣,我們使用某個函式訂閱事件流,每當有一個新的事件時,流將啟用這個函式,以使我們的程式碼能夠對事件作出響應。 在這個比喻中,新聞通訊平臺是事件流,電子報的每一個新聞是一個事件,你的電子郵件是您使用訂閱事件流的函式。
現在想象一個動態的通訊,您可以選擇主題,並只會傳送匹配主題的新聞專案。 你可根據自己的喜好過濾的通訊新聞,而這一點我們可以在事件流做的一樣好。 想像你已經使用不同的電子郵件地址訂閱多個通訊,以及後來決定你想要的通訊的所有新聞傳送到一個新的單電子郵件地址。 簡單可以做的是設定通訊新聞傳送到新的電子郵件地址的轉發郵件規則。 我們可以用事件流同樣做到。
將事件流可以和通常陣列比較。 他們其實很相似。 陣列是在空間值的序列,而事件流是隨時間的值的序列。 在響應式程式設計中,所有函式操作都可以針對一個陣列陣列上 - 比如過濾,reduce,mapping,結合,管道 - 也可以在事件流完成! 我們可以過濾的事件流,reduce合併事件流的值,將事件流對映到另一個另外一個,結合組合事件流,將一個流的輸入輸出到另一個。
我們在執行日常生活活動時,我們會盡可能多工,但大腦無法處理多工,不管我們如何努力去做。我們人類實現多工的唯一辦法是在時間線上在任務之間切換。事實上,我們總是切換任務,即使我們沒有意識到它。
例如,要執行一個任務:在星巴克喝一杯咖啡飲料,你需要發出一個命令,等待它準備好,然後接受你的飲料。當你在等待的時候,你很可能會找到別的事情做。這是最簡單的執行任務的反應(響應)形式,你會在你等待來自咖啡師的“響應”時做別的事情,當你的咖啡已經準備好後,會叫你的名字時。
響應程式設計能夠簡化程式設計,它依賴於事件,程式碼執行的順序不是程式碼行的順序,而是和一個以上的事件有關,這些事件發生是以隨著時間的推移的序列。我們把這一系列事件稱為“流”。
何為事件?例如,你知道某個名人總是在傳送有趣微博,每次他推發一條微博我們可以稱之為一個“事件”。如果你看看這位名人微博系列,你會發現其實是一個隨著時間的推移(一系列的事件)發生的一序列的“事件”。
響應式程式設計就是因為我們得“響應”這些事件而得以命名。例如,想象一下,你在等待某人傳送一個很酷商品的促銷碼,當這條促銷碼發出時,你會立即響應,去購買這個很酷的商品。這正是什麼響應性程式設計的原理。
為了能夠對事件作出反應,我們必須要監督它。 如果我們沒有監聽的情況下,我們永遠不會知道什麼時候它會有事件反應。 在微博上,可以設定監測微博的事件,我們遵循簡併設定我們的電話,每次她發微博事件時就會第一時間通知我們。
在響應式程式設計中,監視事件被稱為偵聽或訂閱該事件。 這一點其實很相似訂閱簡訊。 當您訂閱Web上釋出的新聞,您得提供您的電子郵件地址,每次有新的時事通訊時候,您的電子郵件地址將得到該新聞的一個副本。 同樣,我們使用某個函式訂閱事件流,每當有一個新的事件時,流將啟用這個函式,以使我們的程式碼能夠對事件作出響應。 在這個比喻中,新聞通訊平臺是事件流,電子報的每一個新聞是一個事件,你的電子郵件是您使用訂閱事件流的函式。
現在想象一個動態的通訊,您可以選擇主題,並只會傳送匹配主題的新聞專案。 你可根據自己的喜好過濾的通訊新聞,而這一點我們可以在事件流做的一樣好。 想像你已經使用不同的電子郵件地址訂閱多個通訊,以及後來決定你想要的通訊的所有新聞傳送到一個新的單電子郵件地址。 簡單可以做的是設定通訊新聞傳送到新的電子郵件地址的轉發郵件規則。 我們可以用事件流同樣做到。
將事件流可以和通常陣列比較。 他們其實很相似。 陣列是在空間值的序列,而事件流是隨時間的值的序列。 在響應式程式設計中,所有函式操作都可以針對一個陣列陣列上 - 比如過濾,reduce,mapping,結合,管道 - 也可以在事件流完成! 我們可以過濾的事件流,reduce合併事件流的值,將事件流對映到另一個另外一個,結合組合事件流,將一個流的輸入輸出到另一個。
相關文章
- 通俗解釋什麼函式程式設計中的函子Functors? - iRi函式程式設計
- 什麼是反應式程式設計?程式設計
- 完美解釋 Javascript 響應式程式設計原理JavaScript程式設計
- 響應式設計?響應式設計的基本原理是什麼?如何做?
- 什麼是函式響應式程式設計(Functional Reactive Programming:FRP)函式程式設計FunctionReactFRP
- 區塊鏈是什麼通俗解釋區塊鏈
- 如何通俗解釋Docker是什麼_1Docker
- 通俗易懂的解釋:什麼是APIAPI
- 為什麼要學習響應式設計
- 什麼叫雲端計算?雲端計算通俗解釋
- 最通俗的解釋下雲端計算,雲端計算的核心是什麼?
- 響應式程式設計與響應式系統程式設計
- 為什麼響應式程式設計並非一時之勢?程式設計
- 用一張GIF圖解釋響應式設計圖解
- 通俗解釋啥是雲端計算
- 通俗易懂解釋什麼是PCIA(主成分分析) - stackexchange
- 什麼是響應式網頁?有什麼特點呢?網頁
- 使用Reactor響應式程式設計React程式設計
- 響應式程式設計RxJava (一)程式設計RxJava
- 響應式程式設計總覽程式設計
- 響應式程式設計一覽程式設計
- 什麼是應急響應?網路安全應急響應的物件是什麼?物件
- 響應式程式設計入門(RxJava)程式設計RxJava
- 響應式程式設計庫RxJava初探程式設計RxJava
- 通過程式碼解釋什麼是API,什麼是SDK?API
- 前端響應式佈局為什麼是個坑?前端
- 函式響應式程式設計與RxSwift函式程式設計Swift
- 什麼是AOP程式設計?程式設計
- 瞭解 JavaScript 函數語言程式設計 -- 什麼是純函式JavaScript函數程式設計函式
- 揚帆起航:從指令式程式設計到函式響應式程式設計程式設計函式
- 響應式Web設計Web
- 響應式程式設計簡介之:Reactor程式設計React
- 響應式程式設計機制總結程式設計
- 解釋Vue深入響應式原理Vue
- [譯]函式式響應程式設計入門指南函式程式設計
- 電腦程式設計是什麼?程式設計
- 什麼是極端程式設計?程式設計
- 對響應式程式設計的懷疑 - lukaseder程式設計