Warning: Undefined global variable $debug in /var/www/ourcoders/tiny4cocoa/application/controllers/baseController.php on line 124
有个梨UGlee 2020-01-07 00:08:16 发布的技术动态 - OurCoders (我们程序员)
有个梨UGlee
2020-01-07 00:08:16 发布
dart和node有个基础的不同,虽然看起来很像。

dart,react,Flutter是(鼓励)异步处理事件的;而node的callback和emitter(event handler)是同步的;这是两种完全不同的设计哲学。

全异步对UI来说是合适的,对客户端来说也还可以,因为客户端对错误的容忍度较高,用户偶尔退出程序重新进入不是太大的问题,而代码简单的工程收益很大。

但是node的同步方式是急剧缩减状态空间且易于做状态机白盒测试或验证的(对jit编译也有很大帮助因为代码可以更大范围inline,这也是node性能不俗的重要原因);全异步的测试非常困难。

在dart:async的文档里明确说了stream的同步事件处理是不推荐的;同步事件处理本身应该说在设计上是更优的,但是在设计变更时,比如一个原本同步的过程变成异步的了,状态机需要较大范围修改;但是把同步事件处理在文档中描述成“容易犯错”的也是喷了,你那全异步的处理连正确的定义都特么困难,有什么资格嘲笑同步状态机的设计定义呢?简直是贼喊捉贼的逻辑。