- 本文適合人群:了解Rx編程人士、
Javascript
發(fā)燒友- 本文涉及概念:響應型編程、NodeJs、函數(shù)式編程
本人自從讀過一篇來自Info的《函數(shù)式反應型編程(FRP) —— 實時互動應用開發(fā)的新思路》后便迷戀上了Rx,甚至以當時的Rxjs庫移植了一套適用于Flash的AS3.0的Rx庫ReactiveFl,也在實際開發(fā)中不斷實踐體會其中的樂趣。最近在知乎上無意中看到有人提到了一個名為callbag的項目,引發(fā)了我很大的興趣,甚至×××觀看了作者的視頻Callback Heaven - Andre Staltz看完視頻,我久久不能平靜,這是多么的奇思妙想,然而當我運行了作者代碼庫里面的性能測試的時候,另一個不為人所知的庫出現(xiàn)了,叫做Most。這個庫性能了得,遠遠超過同類的庫,然后我就想是否可以結(jié)合兩者的優(yōu)勢,創(chuàng)造出性能高超,但設計巧妙又通俗易懂的Rx庫呢?于是我做了如下的嘗試:
成都創(chuàng)新互聯(lián)網(wǎng)絡公司擁有10年的成都網(wǎng)站開發(fā)建設經(jīng)驗,1000多家客戶的共同信賴。提供成都網(wǎng)站建設、網(wǎng)站制作、網(wǎng)站開發(fā)、網(wǎng)站定制、買鏈接、建網(wǎng)站、網(wǎng)站搭建、成都響應式網(wǎng)站建設公司、網(wǎng)頁設計師打造企業(yè)風格,提供周到的售前咨詢和貼心的售后服務受到以上的啟發(fā),我又實現(xiàn)了Golang的Rx庫
源碼請關(guān)注我的github,https://github.com/langhuihui
要實現(xiàn)一個Rx庫,關(guān)鍵在于實現(xiàn)數(shù)據(jù)的推送以及消費過程中的四個基本功能:
生產(chǎn)者
(*)-------------(o)--------------(o)---------------(x)----------------|>
| | | | |
Start value value error Done
消費者
(*)-------------(o)--------------(o)---------------(x)----------------|>
| | | | |
Subscribe onNext onNext onError onComplete
上述過程中,如果用戶調(diào)用了unSubscribe/Disopse的方法,就可以中斷,從而不再觸發(fā)任何事件
本人利用js的Proxy類,實現(xiàn)了一個庫同時實現(xiàn)兩種書寫模式的解決方案,我會在后續(xù)的文章中解釋其中的原理。
(未完待續(xù))
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。