非阻塞代码执行

时间:2016-07-19 17:56:57

标签: javascript jquery asynchronous meteor

我有一个定义某些方法的Meteor项目。在那些,电子邮件发送。由于这需要花费大量时间并且减慢了最终用户的整个过程,我想异步发送电子邮件。电子邮件是否成功发送对方法调用的结果没有影响。

据我所知,使用with模拟异步调用很常见。这也是我在这种情况下应该做的事情吗?

编辑:评论中要求的代码

setTimeout

1 个答案:

答案 0 :(得分:2)

如果我的理解是正确的,那么您展示的整个代码都是Meteor方法?

在这种情况下,调用它根本不会阻塞客户端,因为所有Meteor调用都是异步的。这就是你可以提供回调的原因。

但是,如果不仔细设计,服务器上的Meteor方法是同步的。因此,如果客户端进一步拨打电话,则在实际发送电子邮件之前不会对其进行处理。

要恢复服务器上用于发送电子邮件的某些异步行为,请注意Sergio(https://docs.meteor.com/api/email.html)提供的参考页示例中的this.unblock()

现在,如果您希望立即执行Meteor调用客户端回调,而不等待Email.send()完成,则必须延迟该指令(通常用setTimeout包裹它)让你的Meteor方法返回。