根据W3Schools ,超时是必需的参数。但是可以在没有超时参数的情况下调用它。
function eventHandler(e) {
var t = setTimeout(function () {
clearTimeout(t);
alert('Called');
});
}
根据W3Schools ,超时是必需的参数。但是可以在没有超时参数的情况下调用它。
function eventHandler(e) {
var t = setTimeout(function () {
clearTimeout(t);
alert('Called');
});
}
5) 让 timeout 为第二个方法参数,如果参数被省略则为零。
你为什么不自己检查一下?文档总是受欢迎的,但是你不能打败现实世界的例子:
var startTime = Date.now();
setTimeout(function () {
var endTime = Date.now();
alert("timeOut was: " + (endTime - startTime) + "ms");
});
JSFiddle: http: //jsfiddle.net/losnir/PbJBA/
尝试
使用不同的超时值。
不传递超时参数实际上与传递0
. 但是,如您所见, timeout 是 never 0
,这是因为您的回调函数将被放入队列中,并尽快执行(给定您请求的超时值)。
它平均约为 5 毫秒,如果您的 UI 线程正在执行一些密集型任务,或者您的 CPU 很忙 - 它可能高达数百毫秒,太糟糕了!
如果您不想设置超时,则只需通过0
setTimeout(function() {
...
}, 0);
或者,您可以省略延迟参数并0
假设,但是,为了稳健性(和一般可读性),最好在其中传递一些东西。
注意 - 这并不能保证您的代码会立即运行。只要 UI 线程可用于处理它,它就会将您的任务排入队列以运行。
当上述方法要获取超时时,它们必须运行以下步骤:
- 让 timeout 成为方法的第二个参数,或者如果参数被忽略则为零。
- 将 ToString() 抽象操作应用于超时,并以超时为结果。[ECMA262]
- 将 ToNumber() 抽象操作应用于超时,并以超时为结果。[ECMA262]
- 如果 timeout 是 Infinity 值、非数字 (NaN) 值或负数,则让 timeout 为零。
- 将 timeout 向下舍入到最接近的整数,并让 timeout 作为结果。
- 返回超时。
请注意,指定的零超时实际上可能不会延迟零毫秒。有关详细信息,请参阅规范setTimeout
。
是的,您可以在不提供时间的情况下全部完成,但它没有用
setTimeout(
function() {
alert("asdf");
})
它将在下一个滴答声中触发
是的,但它会使该功能异步,或排队等待
setTimeout(function() { alert("msg1");
})
alert("msg2");
在上面的代码中,首先显示 msg2。