gpt4 book ai didi

meteor - 有人可以解释 Meteor.defer() 是如何工作的吗?

转载 作者:行者123 更新时间:2023-12-04 03:07:06 24 4
gpt4 key购买 nike

所以... Meteor.defer(function(){ // stuff })不在文档中:

https://github.com/meteor/meteor/issues/2176

但是this链接似乎说它只是等价于

Meteor.setTimeout(function(){ // stuff }, 0);

如果是这样的话,这是怎么做的,嗯,什么?它基本上是在说“等待 0 毫秒,然后运行该函数”。

所以......它立即运行该功能。

我在这里缺少什么?是这样的吗 Tracker.afterFlush或者其他的东西?它是否以某种方式等待“事物”(什么样的事物?)在运行之前完成?

最佳答案

我看到Meteor.defer()很多关于 SO 被用作对在 dom 加载(有点)后运行的添加的辅助方法的一些黑客攻击 - 基本上是为了获得与在 Template.foo.rendered 中运行代码相同的效果方法。

但是,Meteor.defer 的主要(和最佳)用途是异步运行任务。

假设我们有一个发送电子邮件的应用程序。在服务器上,它可能需要几秒钟才能在 meteor 方法内部进行处理,从而大大降低您的应用程序的速度。但是,如果您将该过程包装在 Meteor.defer电子邮件处理不会阻止执行 ,电子邮件仍然发送(当它有机会时,而不是立即),但一切运行得更快,因为后面的代码不会等待。在 Bulletproof Meteor 上有一个关于延迟执行的很好的示例类(class)。 .

您实际上可以使用 setTimeout(f,0) 获得相同的效果。 - 如果你的函数很慢,你可以把它包装在 setTimeout 中其余的代码将完成,并在超时时“推迟”缓慢的过程,所以虽然看起来不像,setTimeout(f,0)确实有一个非常有用的目的!

要查看此操作的示例,here's a fiddle ,打开控制台并观察“foo”记录的位置。

关于meteor - 有人可以解释 Meteor.defer() 是如何工作的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31579009/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com