通俗解釋什麼是響應式程式設計?

banq發表於2016-08-26
響應式程式設計(Reactive Programming 或稱反應式程式設計)是一種流行的程式設計方法,編寫程式碼是基於對變化的反應。它的靈感來自於我們的日常生活,也即我們如何採取行動以及與他人溝通。

我們在執行日常生活活動時,我們會盡可能多工,但大腦無法處理多工,不管我們如何努力去做。我們人類實現多工的唯一辦法是在時間線上在任務之間切換。事實上,我們總是切換任務,即使我們沒有意識到它。

例如,要執行一個任務:在星巴克喝一杯咖啡飲料,你需要發出一個命令,等待它準備好,然後接受你的飲料。當你在等待的時候,你很可能會找到別的事情做。這是最簡單的執行任務的反應(響應)形式,你會在你等待來自咖啡師的“響應”時做別的事情,當你的咖啡已經準備好後,會叫你的名字時。

響應程式設計能夠簡化程式設計,它依賴於事件,程式碼執行的順序不是程式碼行的順序,而是和一個以上的事件有關,這些事件發生是以隨著時間的推移的序列。我們把這一系列事件稱為“流”。

何為事件?例如,你知道某個名人總是在傳送有趣微博,每次他推發一條微博我們可以稱之為一個“事件”。如果你看看這位名人微博系列,你會發現其實是一個隨著時間的推移(一系列的事件)發生的一序列的“事件”。

響應式程式設計就是因為我們得“響應”這些事件而得以命名。例如,想象一下,你在等待某人傳送一個很酷商品的促銷碼,當這條促銷碼發出時,你會立即響應,去購買這個很酷的商品。這正是什麼響應性程式設計的原理。

為了能夠對事件作出反應,我們必須要監督它。 如果我們沒有監聽的情況下,我們永遠不會知道什麼時候它會有事件反應。 在微博上,可以設定監測微博的事件,我們遵循簡併設定我們的電話,每次她發微博事件時就會第一時間通知我們。

在響應式程式設計中,監視事件被稱為偵聽或訂閱該事件。 這一點其實很相似訂閱簡訊。 當您訂閱Web上釋出的新聞,您得提供您的電子郵件地址,每次有新的時事通訊時候,您的電子郵件地址將得到該新聞的一個副本。 同樣,我們使用某個函式訂閱事件流,每當有一個新的事件時,流將啟用這個函式,以使我們的程式碼能夠對事件作出響應。 在這個比喻中,新聞通訊平臺是事件流,電子報的每一個新聞是一個事件,你的電子郵件是您使用訂閱事件流的函式。

現在想象一個動態的通訊,您可以選擇主題,並只會傳送匹配主題的新聞專案。 你可根據自己的喜好過濾的通訊新聞,而這一點我們可以在事件流做的一樣好。 想像你已經使用不同的電子郵件地址訂閱多個通訊,以及後來決定你想要的通訊的所有新聞傳送到一個新的單電子郵件地址。 簡單可以做的是設定通訊新聞傳送到新的電子郵件地址的轉發郵件規則。 我們可以用事件流同樣做到。

將事件流可以和通常陣列比較。 他們其實很相似。 陣列是在空間值的序列,而事件流是隨時間的值的序列。 在響應式程式設計中,所有函式操作都可以針對一個陣列陣列上 - 比如過濾,reduce,mapping,結合,管道 - 也可以在事件流完成! 我們可以過濾的事件流,reduce合併事件流的值,將事件流對映到另一個另外一個,結合組合事件流,將一個流的輸入輸出到另一個。


How to explain Reactive Programming to a 5-year-ol

相關文章