为什么meteor.js同步?

Mat*_*att 18 node.js meteor node-fibers

代码是不是通过同步来提高效率?为什么编码同步获胜?我在做一些研究时找到了这两个链接:http://bjouhier.wordpress.com/2012/03/11/fibers-and-threads-in-node-js-what-for/,https : //github.com /贤者/ streamlinejs /

如果目标是防止意大利面条代码,那么显然你可以使用例如streamline.js的异步代码,这不是回调金字塔,对吧?

Bru*_*ier 33

你必须在这里区分两件事:

  • 像节点的同步功能fs.readFileSync,fs.statSync等等.所有这些功能有一个Sync在他们的名字(*).这些功能是真正的同步阻塞.如果您调用它们,则会阻止事件循环并终止节点的性能.您应该只在服务器的初始化脚本(或命令行脚本)中使用这些函数.
  • 纤维streamline.js这样的库和工具.这些解决方案允许您以同步方式编写代码,但您使用它们编写的代码仍将以异步方式执行.它们不会阻止事件循环.

(*)require也是阻塞的.

流星使用纤维.它的代码是以同步方式编写的,但它是非阻塞的.

胜利不在性能方面(这些解决方案有自己的开销,因此它们可能稍微慢一点,但它们也可以比特定代码模式(如缓存)的原始回调更好.胜利以及这些解决方案开发的原因在于可用性方面:它们允许您以同步方式编写代码,即使您正在调用异步函数.

2017年1月25日编辑:我创建了3个要点来说明非阻塞纤维: fiber-does-not-block.js,fiber-sleep-sequentials.js,fiber-sleep-parallel.js