javascript - setTimeout在循环中同时执行所有

标签 javascript settimeout

我想每 3 秒打开一个链接。我正在使用setTimeout功能,但是不起作用。所有链接将被打开一次。

for(var i=0; i < url.length-1; i++) {
  setTimeout(function(){
    linkaddress=url[i];
    window.open(linkaddress);
  }, 3000);
}

最佳答案

使用“let”而不是“var”进行 block 级作用域,然后将时间乘以 i 变量 ( more info )。代码:

 var url = ["https://domain1.com","https://www.domain2.com"],
     timeout = 3; // Time in second

 for(let i=1; i <= url.length; i++){
   setTimeout(function(){
     linkaddress=url[i-1];
     window.open(linkaddress);
   }, i * timeout * 1000);
 }

编辑:请注意,此代码使用 EcmaScript 6特点

关于javascript - setTimeout在循环中同时执行所有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55740627/

相关文章:

javascript - 将 Ember.js 用于仅与 Rails 一起使用的某些 View

javascript - 特定像素值的精确滚动位置

javascript - Handlebars 有时不会在每个助手中打印 {{this}}

javascript - 如何将 React 的 getDerivedStateFromProps 与 setTimeout 一起使用?

javascript - 了解 alert() 如何影响浏览器事件循环

javascript - setTimeout 与 Promise 一起使用时的不明确行为

javascript - 使用 Javascript 更改表结构

javascript - VUE 在路由之间使用三个 JS 释放内存

javascript - 使用 Promise.race 和 setImmediate 确定 Promise 状态

javascript - setTimeout 的范围