JavaScript setTimeout,操作顺序,clearTimeout

示例

setTimeout

  • 等待指定的毫秒数后执行功能。

  • 用于延迟执行功能。

语法: setTimeout(function, milliseconds)或window.setTimeout(function, milliseconds)

示例:  此示例在1秒钟后向控制台输出“ hello”。第二个参数以毫秒为单位,因此1000 = 1秒,250 = 0.25秒,依此类推。

setTimeout(function() {
    console.log('hello');
}, 1000);

setTimeout问题

如果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); // 超时将不再执行