在For循环中逐一运行URL

Run URL one by one in For loop

本文关键字:运行 URL For 循环      更新时间:2023-09-26

我的数组中有几个url,我想一个一个地运行,但是当我在循环中运行它时,它会同时执行,而不会等待。

这是我尝试的:

<html>
    <head>
    <script>
        function work(){
            var otherStoryLinksArray = [];
            otherStoryLinksArray[0] = 'http://google.com';
            otherStoryLinksArray[1] = 'http://www.yahoo.com';
            otherStoryLinksArray[2] = 'http://gmail.com';
            for(var i=0;i<3;i++){   
                var openWindow = window.open(otherStoryLinksArray[i]);  
                setTimeout(function(){openWindow.close();},3000);
            }
        }
    </script>
    </head>
    <body onload=work();>
    </body>
</html>

我想让它打开一个URL,等待30秒,关闭弹出窗口,然后启动另一个URL。

等待你的回复伙计们。任何帮助都会很感激,谢谢…

代码: http://jsfiddle.net/WgR4y/1/

Demo: http://jsfiddle.net/WgR4y/1/show/(确保你禁用了弹出窗口拦截器)

适用于数组中无限数量的url。

var otherStoryLinksArray = [
      'http://google.com',
      'http://www.yahoo.com',
      'http://gmail.com'
    ],
    timeToCloseWindow = 3000;
function work() {
    if(otherStoryLinksArray.length==0) return;
    var url = otherStoryLinksArray.shift();
    var openWindow = window.open(url);
    setTimeout(function () {
        openWindow.close();
        work();
    }, timeToCloseWindow);
}
work();

你需要交错setTimeout调用,因为setTimeout使用毫秒,30秒= 30000毫秒:

   function work () {
        var otherStoryLinksArray = [];
        otherStoryLinksArray[0] = 'http://google.com';
        otherStoryLinksArray[1] = 'http://www.yahoo.com';
        otherStoryLinksArray[2] = 'http://gmail.com';
        for(var i=0; i<3; i++) {
            var openWindow;
            setTimeout(function () { 
                openWindow = window.open(otherStoryLinksArray[i]);
            }, 30000 * i); //Open this window
            setTimeout(function () {
                openWindow.close();
            }, 30000 * i + 30000); //Close it 30 seconds from "now"
        }
    }

使用set interval代替for-loop

function work(){
        var otherStoryLinksArray = [];
        otherStoryLinksArray[0] = 'http://google.com';
        otherStoryLinksArray[1] = 'http://www.yahoo.com';
        otherStoryLinksArray[2] = 'http://gmail.com';
        var myVar=setInterval(function(){myTimer()},3000);
        var i=0;
        var openWindow;
        function myTimer()
        {
            if(openWindow != null)
                openWindow.close();
            if(i < 3) 
            {                    
                openWindow = window.open(otherStoryLinksArray[i]);  
                i++;
            }
            else
                clearInterval(myVar);
        }
    }
var otherStoryLinksArray = [
    'http://google.com',
    'http://www.yahoo.com',
    'http://gmail.com'];
var i = 0;
var openedWindow = null;
function loop(){
    openedWindow && openedWindow.close();
    if(otherStoryLinksArray[i]){
        var openedWindow = window.open(otherStoryLinksArray[i]);  
        i++;
        setTimeout(loop,30000);
    }
}