在Meteor中,Meteor.wrapAsync是否阻塞其他呼叫?

在Meteor JS代码中,我使用HTTP.get方法在一个方法内调用服务器。 我必须返回结果给客户端,所以我用Meteor.wrapAsync包装这个函数来获得一个同步函数。

 var httpSync = Meteor.wrapAsync(HTTP.get, this); var result = httpSync(myUrl); 

我的问题是 – 将Meteor.wrapAsync(AsyncFunction)阻止其他请求? 它会影响多个请求的并行执行吗?

它不会阻塞整个服务器。 Meteor使用光纤封装来提供“同步观看”function,而不会阻塞整个服务器。

但是,它会阻止来自同一用户的其他方法。 如果您希望该用户的其他方法同时运行,请在该方法内调用this.unblock()

在服务器上,来自给定客户端的方法一次运行一个。 直到第N次调用返回,第N + 1个来自客户端的调用才会启动。 不过,你可以通过调用this.unblock来改变它。 这将允许第N + 1个调用开始在新的光纤中运行。

顺便说一句,你不需要Meteor.wrapAsync HTTP.get ,因为它已经可以同步使用了。 wrapAsync旨在用于不是为Meteordevise的外部库。