【发布时间】:2013-03-07 12:25:39
【问题描述】:
在使用骨干网几周后,我意识到下划线延迟最终解决了我在渲染各种视图时遇到的许多异步问题。 有人可以帮我准确理解下划线 defer 的作用以及 $.ready() 或其他类型的等待 dom 呈现函数有何不同。使用它的缺点是什么?
_.defer = function(func) {
return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));
};
【问题讨论】:
-
那么,
_.delay是做什么的?答案就在于此。 -
它似乎要等待 1 毫秒。我仍然不明白它是如何知道某些元素被渲染等的。也许我使用不正确?
-
如果您发布一个您必须使用
defer并且不明白原因的地方的示例可能会更有帮助。 -
这一定是我最喜欢的关于 SO 的问题之一。 “这解决了我所有的问题,但我不知道”:D
-
我注意到
_.defer会导致我的 Backbone 应用程序出现内存泄漏。因此,虽然它可以修复渲染问题,但它可以添加内存问题。将_.defer(_.bind(this.renderViews, this));替换为this.renderViews();将我的单页应用程序中随着导航而增长的堆配置文件数量减半。我认为这是因为它增加了在视图关闭时通过在自然顺序之外进行工作来搞砸资源取消引用的可能性。当然,这显然首先取决于您如何使用 Backbone。
标签: javascript backbone.js underscore.js