1樓:李宇翔
李宇翔:RxJS的另外四種實現方式(序)
因為看到這個帖子才讓我去研究了callbag,才讓我去思考callbag的改進空間,感謝本帖
2樓:楊劍鋒
callbag 和 rxjs 非常相似,但有乙個區別:rxjs 裡 observable 和 observer 是個單向通訊,observable 負責吐資料給 observer,callbag 裡的 source 和 sink 是雙向通訊的。
簡單的示意圖看一下
Rxjs:
ObservableObserver0gt1gt2gt;
Callbag:
SourceSink0gt1gtlt23gt;
具體可以看看作者對這一部分的闡述
3樓:Jim Liu
不難發現,callbag裡的
pipe(a, b, c)
和rxjs裡的
a.b().c()
因為他們各自定義了一套規範,比如onNext, onCompete, onError這類,用來實現觀察者模式,上面例子中的a是觀察者中的資料來源,b和c是為了方便實現各種業務邏輯而預先封裝的一堆transducer。
所以結論是:這倆在程式設計模型上幾乎是等價的,只是API設計的口味不一樣。
4樓:鄭丰彧
這個問題其實還是奔著 Callbag 來的,那我就直奔主題。
大約2個多月前,我的 GitHub Dashboard 被 staltz (allbag 的作者) 大神刷屏了,各種 callbag-xx 。我的理解是,Callbag 就是 staltz 大神基於他對響應式程式設計的理解再造的輪子,前有 cyclejs 和 xstream 。用一句話概括 Callbag 就是把它想象成 Observable 和 Iterable 的混血兒。
另外,Callbag 其實只是乙個規範,真正編碼需要的是 Callbag-basics,它是之前提到過的 callbag-xx 的合集。
至於 Callbag 和 RxJS 的區別,在響應式程式設計這個層面上其實並沒有什麼區別,Callbag 中的 source 是可以轉換成 RxJS 的 Observable 的,參見 callbag-to-rxjs 。而 callbag-pseudo-rxjs 又在概念層面上驗證了 RxJS 風格的 API 是完全可以在底層用 Callbag 來實現。
最後補充一句,Callbag 我還沒實際用過,有理解不對的地方請擔待。
為什麼 RxJS 的關注度這麼低?
李宇翔 RxJS 如今已經公升級到6.0,高階函式作為操作符,擴充套件性 復用性進一步提高。使用RxJS的業務場景其實不是很多,如果開發遊戲的話是非常適合的,因為有非常多的事件處理過程,互動複雜,RxJS可以使得邏輯更清晰,Bug更容易修復。這個是我實踐的結果,如果是普通業務,流程相對沒那麼多交錯,...
和 有什麼區別?
日本語教師 大東 二 文 後 動 関 意味合 人変 方 表 意志形 人 參與 意識 非常 高 対象 他 人 動 非常 関 否定 泉 水 枯文 込 泉 吸 取 泉人 使 関係 泉 使 人 取必含 対動 未來形人 參與度 低 自 何 変動 出 文 中 入泉 自 渇水期 可能性 示 様態 動 主體 対 判...
Hardstyle 和 Dubstep 有什麼區別?
VolticX 我不是那麼專業 就從普通聽眾角度來說,差別很大.hardstyle更快,而且很明顯能聽到咚咚咚的鼓,而且會是很規則有節奏感的鼓 dubstep略慢,它更多的是多變,鼓的變化是dubstep的特色之一。從鼓來講就有很大區別吧,更別說別的了 西格Seager 上面的兄台已經把結構上的區別...