91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

RxJS的另外四種實現方式(序)

發布時間:2020-08-04 07:05:12 來源:網絡 閱讀:274 作者:一個灰 欄目:web開發
  • 本文適合人群:了解Rx編程人士、Javascript發燒友
  • 本文涉及概念:響應型編程NodeJs函數式編程

背景

本人自從讀過一篇來自Info的《函數式反應型編程(FRP) —— 實時互動應用開發的新思路》后便迷戀上了Rx,甚至以當時的Rxjs庫移植了一套適用于Flash的AS3.0的Rx庫ReactiveFl,也在實際開發中不斷實踐體會其中的樂趣。最近在知乎上無意中看到有人提到了一個名為callbag的項目,引發了我很大的興趣,甚至×××觀看了作者的視頻Callback Heaven - Andre Staltz看完視頻,我久久不能平靜,這是多么的奇思妙想,然而當我運行了作者代碼庫里面的性能測試的時候,另一個不為人所知的庫出現了,叫做Most。這個庫性能了得,遠遠超過同類的庫,然后我就想是否可以結合兩者的優勢,創造出性能高超,但設計巧妙又通俗易懂的Rx庫呢?于是我做了如下的嘗試:

RxJs的四種實現方式

  1. 實現代碼最小的庫(受callbag啟發)
  2. 性能最好的庫(參考了Most)
  3. 利用js的生成器實現的庫(突發奇想)
  4. 擴展Nodejs的Stream類實現的庫(受Event-Stream的啟發)

    受到以上的啟發,我又實現了Golang的Rx庫
    源碼請關注我的github,https://github.com/langhuihui

Rx實現的關鍵功能

要實現一個Rx庫,關鍵在于實現數據的推送以及消費過程中的四個基本功能:

  1. 訂閱:即激活Rx數據流的每一個環節,生產者此時可以開始發送數據(某些生產者并不關心是否有人訂閱)
  2. 發送/接受 數據:生產和消費的核心功能
  3. 完成/異常:由生產者發出的事件
  4. 取消訂閱: 由消費者觸發終止數據流,回收所有資源
生產者
(*)-------------(o)--------------(o)---------------(x)----------------|>
 |               |                |                 |                 |
Start          value            value             error              Done
消費者
(*)-------------(o)--------------(o)---------------(x)----------------|>
 |               |                |                 |                 |
Subscribe      onNext           onNext            onError         onComplete

上述過程中,如果用戶調用了unSubscribe/Disopse的方法,就可以中斷,從而不再觸發任何事件

Rx的兩種書寫模式

  1. 鏈式編程
  2. 管道模式

本人利用js的Proxy類,實現了一個庫同時實現兩種書寫模式的解決方案,我會在后續的文章中解釋其中的原理。
(未完待續)

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

奈曼旗| 乐都县| 双鸭山市| 资兴市| 新宁县| 博爱县| 泽普县| 临桂县| 都匀市| 诸暨市| 河东区| 新邵县| 昭觉县| 泰顺县| 灵川县| 留坝县| 邯郸市| 株洲县| 丹巴县| 来宾市| 盐津县| 凤冈县| 璧山县| 定边县| 沅江市| 宁安市| 如皋市| 兴安盟| 尼勒克县| 北宁市| 扎囊县| 章丘市| 武陟县| 滨海县| 禄丰县| 六安市| 青海省| 民县| 麻阳| 内江市| 昌江|