使用setTimeout和setInterval

时间:2013-01-25 05:14:21

标签: javascript jquery html

我最初加载页面时需要在30秒内调用一个函数。此后应该在60秒内自动调用。

我做的是,

  <html>
    <head>
    </head>
    <body>
    <script>
        setTimeout('ajaxload()',30000);
        setInterval('ajaxload()',60000);
        function ajaxload()
        {
         //code
        }
    </script>

    </body>
    </html>

但我想这个功能是在不规则的时间调用的。我做得对吗?如果有任何错误,请分享......

4 个答案:

答案 0 :(得分:6)

不传递字符串..传递函数名称/声明本身:

setTimeout(function () {
   ajaxload();
   setInterval(ajaxload, 60000);
}, 30000);

答案 1 :(得分:2)

您使用它有点不正确。如果第一个是30秒,然后是60秒,你应该按顺序进行。

setTimeout(startAjaxLoad,30000);

function ajaxload()
{
     //code
}

function startAjaxLoad() 
{
    ajaxload();
    setInterval(ajaxload,60000);
}

答案 2 :(得分:0)

更改为

setTimeout(function(){ajaxload()},30000);
setInterval(function(){ajaxload()},60000);
function ajaxload()
        {
         //code
        }

答案 3 :(得分:0)

如果您要继续调用AJAX方法,等待它先完成然后再次使用setTimeout(),我会考虑更整洁一些。

function ajaxload()
{
    $.ajax({

        // AJAX Settings.
        // ...

        complete: function()
        {
            // Call .ajaxload() 60 seconds from the completion of this request.
            setTimeout(ajaxload, 60000);
        }

    });
}



// Initial call.
setTimeout(ajaxload, 30000);