Meteor 流星穿线风格澄清

Meteor 流星穿线风格澄清,meteor,Meteor,Meteor的文件说明: 在Meteor中,服务器代码在每个请求的单个线程中运行,而不是在典型的节点异步回调样式中运行 他们真的是什么意思 A) 服务器正在并行运行多个线程(这在Node.js生态系统中似乎不常见) 或 B) 事件服务器中仍然只有一个线程,每个请求都是按顺序处理的,至少直到它调用服务器外部的资源(如数据存储),此时服务器本身正在处理回调,同时处理其他请求,因此,您不必自己编写/管理回调。Brad,您的B是正确的 流星内部使用。正如您所说,在一个事件服务器中只有一个线程,但是当您(

Meteor的文件说明:

在Meteor中,服务器代码在每个请求的单个线程中运行,而不是在典型的节点异步回调样式中运行

他们真的是什么意思

A) 服务器正在并行运行多个线程(这在Node.js生态系统中似乎不常见)


B) 事件服务器中仍然只有一个线程,每个请求都是按顺序处理的,至少直到它调用服务器外部的资源(如数据存储),此时服务器本身正在处理回调,同时处理其他请求,因此,您不必自己编写/管理回调。

Brad,您的B是正确的

流星内部使用。正如您所说,在一个事件服务器中只有一个线程,但是当您(例如)读取数据库时,线程和控制会很快返回到事件循环。因此,您的代码如下所示:

doc = MyCollection.findOne(id);
(隐藏“屈服于事件循环,当文档在这里时返回”)而不是

MyCollection.findOne(id, function (err, doc) {
  if (err)
     handle(err);
  process(doc);
});
光纤版本中的错误处理也只使用标准JavaScript异常,而不需要每次都检查参数


我认为这将为业务逻辑带来一种更容易阅读的代码风格,它希望执行一系列相互依赖的操作。但是,如果您想使用异步样式,Meteor的大多数同步API都可以选择回调并变为异步。

Meteor文档中关于这一点的措辞确实需要澄清。这听起来是他们采取的一个非常好的方法,但措辞让我质疑在幕后到底发生了什么。