RxJS是一套藉由Observable sequences來組合非同步行為和事件基礎程序的Library脚线!
可以把RxJS 想成處理非同步行為的Lodash搁胆。
這也被稱為Functional Reactive Programming,更切確地說是指Functional Programming 及Reactive Programming 兩個編程思想的結合邮绿。
如果要用一句話來總結Functional Programming渠旁,那就是用function來思考我們的問題,以及撰寫程式
Reactive Programming簡單來說就是當變數(shù)或資源發(fā)生變動時船逮,由變數(shù)或資源自動告訴我發(fā)生變動了
這句話看似簡單顾腊,其實背后隱含兩件事
當發(fā)生變動=> 非同步:不知道什么時候會發(fā)生變動,反正變動時要跟我說
由變數(shù)自動告知我=> 我不用寫通知我的每一步程式碼
由于最近很紅的Vue.js 底層就是用Reactive Programming 的概念實作傻唾,讓我能很好的舉例投慈,讓大家理解什么是Reactive Programming!
當我們在使用vue開發(fā)時冠骄,只要一有綁定的變數(shù)發(fā)生改變伪煤,相關的變數(shù)及畫面也會跟著變動,而開發(fā)者不需要寫這其中如何通知發(fā)生變化的每一步程式碼凛辣,只需要專注在發(fā)生變化時要做什么事抱既,這就是典型的Reactive Programming (記得必須是由變數(shù)或資源主動告知!)
Vue.js在做two-ways data binding是透過ES5 definedProperty的getter/setter扁誓。每當變數(shù)發(fā)生變動時防泵,就會執(zhí)行getter/setter從而收集有改動的變數(shù),這也被稱為依賴收集蝗敢。
Rx 基本上就是上述的兩個觀念的結合捷泞,這個部份讀者在看完之后的文章,會有更深的體悟寿谴。