亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

当阳市| 集安市| 靖远县| 庐江县| 清河县| 吉林市| 澄迈县| 大名县| 响水县| 东莞市| 隆安县| 云南省| 凌云县| 揭东县| 平南县| 温宿县| 宜川县| 滨州市| 莆田市| 绥化市| 阜城县| 沧州市| 台南市| 修文县| 巴林左旗| 桃园市| 彰武县| 景泰县| 德兴市| 吉木萨尔县| 台江县| 伽师县| 黔东| 中卫市| 清新县| 会理县| 静乐县| 桐柏县| 德庆县| 小金县| 乐至县|