【发布时间】:2010-09-01 09:49:51
【问题描述】:
有 jQuery 等价于原型的 defer 吗?
我正在寻找可以延迟脚本执行直到页面中的所有脚本都执行完毕的东西。
谢谢!
第二部分: 有什么方法可以查看队列中是否还有其他 setTimeouts 并将执行延迟到它们触发之后?我在 cmets 中看到,有时 setTimeout 为 0 或 1 并不重要,因为无法预测哪个会先触发。
再次感谢!
更新回答
我从下面接受的答案中发现了我正在使用的代码中的一个错误。切片调用需要在 0 上工作,而不是 1,因为在 Prototype 核心代码中,它接受一个额外的参数来表示等待的时间量 (0.01)。那么最后的方法就变成了:
Function.prototype.deferFunc = function() {
var __method = this, args = Array.prototype.slice.call(arguments, 0);
return window.setTimeout(function() {
return __method.apply(__method, args);
}, 0.01);
}
【问题讨论】:
-
我不确定您指的是哪个
defer?我知道的唯一一个不是 Prototype 特有的。 -
啊,我猜你的意思是这个。 prototypejs.org/api/function/defer
-
对,我指的是js库原型。
标签: javascript jquery prototypejs