在Meteor中,为什么会使用Meteor.setTimeout()而不是普通的setTimeout()?
使用Meteor.setTimeout()而不仅仅是vanilla setTimeout或setInterval有什么价值?
答案 0 :(得分:19)
在客户端,它们之间没有区别。
在服务器上,当代码针对特定用户运行时(例如在方法调用中),您需要使用Meteor.setTimeout
而不是window.setTimeout
来使Meteor记住该函数应该是哪个用户调用。在调用传递给Meteor.setTimeout
的函数和调用函数之间的时间内,其他用户可能已经调用了服务器上的方法,而不是Meteor.userId
来返回其用户ID。 Meteor.setTimeout
将更改回来,以便在调用传递给它的函数之前,Meteor.userId
返回用户对Meteor.setTimeout
的调用的用户ID。
这是一个设计决定。
答案 1 :(得分:8)
使用Meteor.setTimeout()
可确保此代码可识别Fibers。阅读有关Fibers的更多信息:https://github.com/laverdet/node-fibers