callbag和rxjs有什麼區別?

時間 2021-05-31 05:43:36

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 上面的兄台已經把結構上的區別...