有个梨UGlee
2020-01-06 23:08:20 发布
Dart的Async函数,可以用then/catch resolve;
Dart的Stream,可以用onDate/onError/onComplete listener;所以目测看起来似乎是和node的callback/emitter没区别的。
但实际上区别是巨大的;当多个emitter要组合时,互斥“拔掉”对方的handler或者destroy是极为常见的;这特么在Flutter里只能用闭包变量block了;在层级多的时候很麻烦;此其一;
其二,Dart的Stream竟然会区分Single Subscription和Broadcast,你大爷的,Event去耦的本质时去除message和message handler的耦合,你管它有多少个listener呢?我挂一个listener只为了debug行不行啊?
emitter只需要一个语义即可完成的事情,Dart:Async重新“发明”了一大堆函数解决。简直了。