所以... Meteor.defer(function(){ // stuff })不在文档中:
https://github.com/meteor/meteor/issues/2176
但这个链接似乎说它只是等同于
Meteor.setTimeout(function(){ // stuff }, 0);
Run Code Online (Sandbox Code Playgroud)
如果是这样的话,这怎么办,嗯,什么?它基本上是说"等待0 ms然后运行该功能".
所以...它立即运行该功能.
我在这里错过了什么?是这样的Tracker.afterFlush还是什么?在跑步之前,它是否以某种方式等待"事物"(什么样的事情?)完成?
Jor*_*vis 19
我看到Meteor.defer()的SO被用作了很多位上添加辅助方法一个黑客运行后的DOM是(有点)加载-基本上得到的内部运行的代码相同的效果Template.foo.rendered的方法.
但是,主要(和最好)的用途Meteor.defer是异步运行任务.
假设我们有一个应用程序,我们正在发送电子邮件.在服务器上,可能需要几秒钟才能在流星方法内部进行处理,从而大大降低应用程序的运行速度.但是,如果你Meteor.defer在电子邮件处理中包装该进程不会阻止执行,那么电子邮件仍会发送(当它有机会时,而不是立即发送),但是所有内容都运行得更快,因为后面的代码没有等待.关于推迟在Bulletproof Meteor执行的一个很好的示例课程.
你实际上可以得到相同的效果setTimeout(f,0)- 如果你有一个慢的函数,你可以将它包装在setTimeout其中代码将完成,并在延迟中"延迟"缓慢的进程,所以虽然看起来不像喜欢它,setTimeout(f,0)确实有一个非常有用的目的!
要查看这个实例的示例,这里有一个小提琴,打开控制台并观察'foo'记录的位置.
| 归档时间: |
|
| 查看次数: |
6729 次 |
| 最近记录: |