我有一个定义某些方法的Meteor项目。在那些,电子邮件发送。由于这需要花费大量时间并且减慢了最终用户的整个过程,我想异步发送电子邮件。电子邮件是否成功发送对方法调用的结果没有影响。
据我所知,使用with
模拟异步调用很常见。这也是我在这种情况下应该做的事情吗?
编辑:评论中要求的代码
setTimeout
答案 0 :(得分:2)
如果我的理解是正确的,那么您展示的整个代码都是Meteor方法?
在这种情况下,调用它根本不会阻塞客户端,因为所有Meteor调用都是异步的。这就是你可以提供回调的原因。
但是,如果不仔细设计,服务器上的Meteor方法是同步的。因此,如果客户端进一步拨打电话,则在实际发送电子邮件之前不会对其进行处理。
要恢复服务器上用于发送电子邮件的某些异步行为,请注意Sergio(https://docs.meteor.com/api/email.html)提供的参考页示例中的this.unblock()
行
现在,如果您希望立即执行Meteor调用客户端回调,而不等待Email.send()
完成,则必须延迟该指令(通常用setTimeout
包裹它)让你的Meteor方法返回。