setTimeout 操作顺序 clearTimeout
setTimeout
- 等待指定的毫秒数后执行一个函数。
- 用于延迟函数的执行。
语法: setTimeout(function, milliseconds)
或 window.setTimeout(function, milliseconds)
示例: 此示例在 1 秒后向控制台输出 hello
。第二个参数以毫秒为单位,因此 1000 = 1 秒,250 = 0.25 秒等。
setTimeout(function() {
console.log('hello');
}, 1000);
setTimeout 的问题
如果你在 for 循环中使用 setTimeout
方法 :
for (i = 0; i < 3; ++i) {
setTimeout(function(){
console.log(i);
}, 500);
}
这将输出值 3 three
次,这是不正确的。
解决此问题的方法:
for (i = 0; i < 3; ++i) {
setTimeout(function(j){
console.log(i);
}(i), 1000);
}
它将输出值 0
,1
,2
。在这里,我们将 i
作为参数传递给函数(j
)。
操作顺序
此外,由于 Javascript 是单线程并使用全局事件循环这一事实,setTimeout
可用于通过调用 setTimeout
以零延迟将项添加到执行队列的末尾。例如:
setTimeout(function() {
console.log('world');
}, 0);
console.log('hello');
实际输出:
hello
world
此外,此处零毫秒并不意味着 setTimeout 内的函数将立即执行。根据执行队列中剩余的要执行的项目,需要稍微多一点。这个只是推到队列的末尾。
取消超时
clearTimeout()
: 停止执行 setTimeout()
中指定的函数
语法: clearTimeout(timeoutVariable)
或 window.clearTimeout(timeoutVariable)
示例:
var timeout = setTimeout(function() {
console.log('hello');
}, 1000);
clearTimeout(timeout); // The timeout will no longer be executed