如何在javascript中暂停执行?

时间:2016-04-26 22:32:47

标签: javascript timeout

我的程序在每次迭代操作一部分网址后打开2-7个网页(增加网址中的日期值)。我希望我的程序在打开下一个url之前暂停。例如:打开网址1 - >等待1.5秒 - >打开URL 2 ...等

我的javascript函数看起来像这样:

function submitClicked(){
save current date in URL as variable
loop(4 times){
window.open(urlString); //open the initial URL
var newDate = getNextDay(date);
urlString.replace(date, newDate); (ex: if 2016-12-31 then replace it in URL with with 2017-01-01)
**wait 1.5 seconds**
}

function getNextDay(date){
...
return result (String value)
}

所以基本上,我希望它在循环的每次迭代结束时暂停1.5秒。我用Java制作了相同的程序,只使用了Thread.sleep(1500);

1 个答案:

答案 0 :(得分:2)

你永远不应该试图阻止JavaScript中的线程执行,因为这会导致浏览器感到厌恶,并且通常会给用户带来非常糟糕的体验。您可以使用setInterval进行重构以防止此情况发生。

arr = ['http://site1', 'http://site2', 'http://site3'];
timer = null;

function instantiateTimer(){
  timer = setInterval(openPage, 1000); // 1 second
}

function openPage(){
  if(arr.length > 0){
    page = arr.pop();
    window.open(page) // some browsers may block this as a pop-up!
  }else{
    clearInterval(timer);
  }
}