Function.defer - Prototype JavaScript 框架

Xunxin Prototype API

defer
1.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>");