defer1.6.0
defer(arg...) -> Number
当 JavaScript 解释器空闲后,再运行函数。
译注:其实这个方法是调用 delay,并将 seconds
参数设为 0.01 秒。因为从本质上来说,JavaScript 是单线程的(据说 Google Chrome 的 V8 引擎是多线程的),在
delay
方法中,当代码执行到 window.setTimeout
一句时,程序只是记下当前的时间,
然后继续执行下面的语句,只有当下面的语句都执行完后,才检查此时的时间是否大于 setTimeout
指定的时间间隔,如果大于,则执行 setTimeout
中指定的函数。这就是“解释器空闲后,再运行函数”的由来。
一个“延迟执行”的函数不会立即运行,从某种程度上来说,它会在 JavaScript 解释器调用堆栈为空时执行。
该方法的行为非常类似于将延时设为 0
的
window.setTimeout 方法。该方法返回一个 ID,可以在函数运行前使用
window.clearTimeout 取消函数的运行。
样例
function hideNewElement() {
$('inserted').hide();
};
function insertThenHide(markup) {
$('container').insert(markup);
// IE 需要一点时间增加新的标记到 DOM 树中
hideNewElement.defer();
}
insertThenHide("<div id='inserted'>Lorem ipsum</div>");