reactive programming[intro]

前言

reactive programming算是繼functional programming之後比較潮的編程理念了。

reactive programming一般具備以下幾個要素:

    event-driven

    Elastic

    resillient

    responsive

event-driven

reactive programming 的第一個要義是事件驅動 react to event。

事件驅動往往和async是掛鉤的,這種none-block的程序模型對於代碼並發效率提升有顯著效果。

reactive programming把數據模型的mutation看成是事件。

這種理念是可以說是event sourcing思想的加強版。

舉個rxjs的例子。

//採用rx的fromEvent操作符來描述數據源驅動 Observable.fromEvent(document,"click") .subscribe({next:(data)=>{ console.log(`document clicked`) }})

Elastic

靈活的數據處理模型。

在reactive programming的體系里,動態調節程序負載是一個基本要求。

以前端開發為例,我們常用throttle和debounce的方式來調節用戶在數據流,以便動態調節程序負載。在reactive programming中,這些數據處理方式則是一種常態。

舉個rxjs的例子。

//間隔1秒觸發的數據,變為了2秒才能執行通知。實現數據節流 Observable.interval(1000).throttleTime(2000) .subscribe({next:console.log})

resillient

容錯處理。

在前端領域,我們有Promise的catch,也有try/catch來處理。

對於一個事件驅動的framework來說,這種hard code的方式絕對是不夠的。

reactive programming在錯誤處理的基礎上,還要求程序有恢複數據流,保持健壯性和事件驅動恢復的能力。

舉個rxjs的例子

get(url).retry(3)// Displays the data from the URL or cached data .subscribe({next:console.log})

responsive

響應式 react to users

事件處理是reactive programming的第一要義,處理函數或者操作符要能夠組合、拆分等等來滿足框架要求。

結語

本文的話,對reactive-programming的介紹比較簡略。 對於我們大部分JSER來說,了解這種編程理念的最好途徑莫過於學習rxjs了。

最後,廣告時間。

阿里釘釘團隊招資深前端開發工程師,如果您對react +redux技術棧有比較好的實踐,請直接投遞如下郵箱。

xiaogang.hxg@alibaba-inc.com。


推薦閱讀:

【譯】唯快不破:Web 應用的 13 個優化步驟
前端利器之Bootstrap
減少前端代碼耦合
基於正態分布的前端性能數據分析(一)
U4 2.0 新特性 —— Web Push

TAG:前端开发 | 前端工程师 | React |