2

当你在 Meteor 服务器上调用同步函数时,它是否会阻塞整个服务器,直到收到回调?

queueTask = function(callback) { ... }
queueTaskSync = Meteor._wrapAsync(queueTask)
queueTaskSync(function(results) {
    console.log('callback returns after 10 seconds')
    Results.insert(results)
})

换句话说,如果回调需要 10 秒才能返回,这是否意味着服务器在 10 秒内不能做任何其他事情?

4

1 回答 1

4

这取决于这段代码在哪里。如果代码在Meteor.methods服务器上,来自同一客户端的其他对流星的调用将被阻止,但其他的不会被阻止,因为它们位于不同的光纤中。

你可以在你的方法中绕过这个使用this.unblock()来确保下一个方法调用在新的纤程中运行,从而使它们更像并发。

于 2014-01-16T15:49:09.200 回答