等待指定的毫秒数后执行功能。
用于延迟执行功能。
语法: setTimeout(function, milliseconds)或window.setTimeout(function, milliseconds)
示例: 此示例在1秒钟后向控制台输出“ hello”。第二个参数以毫秒为单位,因此1000 = 1秒,250 = 0.25秒,依此类推。
setTimeout(function() { console.log('hello'); }, 1000);
如果setTimeout在for循环中使用该方法:
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); // 超时将不再执行