在一段时间后,在Javascript中自动调用函数的正确方法是什么?

时间:2013-10-03 10:23:25

标签: javascript ajax

我需要在一分钟后调用一个函数并更新div

基本上我需要刷新页面,因为表中有新条目,所以我认为Ajax会在一分钟后调用并更新内容。请告诉我这是否正确?

5 个答案:

答案 0 :(得分:1)

如果您需要每隔60秒运行一次该功能,可以使用setInterval()

setInterval(function() {
    /* AJAX call here. */
}, 60000);

如果您只需要运行一次,则可以使用setTimeout()

setTimeout(function() {
    /* AJAX call here. */
}, 60000);

对于两者,60,000是毫秒延迟(60,000ms = 1分钟)。

答案 1 :(得分:1)

除了使用setInterval之外,你可以执行一个60秒(60000毫秒)的setTimeout,只有在前一个调用成功完成时才能进行ajax调用(因此,作为例子) ,如果您的服务器为给定资源返回404或500状态,则可以避免进行无用的ajax调用)

var xhr = new XMLHttpRequest();

function doAjaxCall() {
    ...
    xhr.onReadyStateChange = function() {

        ...
        if (xhr.readyState === 4) {
            if (xhr.status === 200 || xhr.status === 304) { 
                setTimeout(doAjaxCall, 60000);
            }
        }
    }
}

doAjaxCall();

答案 2 :(得分:0)

setTimeout()和它的兄弟setInterval()

setTimeout - 调用一次

setInterval - 每隔指定的时间间隔调用

示例:

setTimeout(function() { doStuffOnce(); }, 1000);
setInterval(function() { doStuff(); }, 1000);

答案 3 :(得分:0)

如果您只需要等待AJAX​​完成,那么您就不应该使用固定的超时。如果AJAX调用超过一分钟会发生什么?如果AJAX调用在一秒左右完成(通常情况下),为什么要让用户等待整整一分钟(这是永远在浏览器中)。相反,只需使用AJAX调用本身的回调,例如

$("/url/to/your/AJAX").done(function(data) {
  // do what you need to do with the data now
})

答案 4 :(得分:0)

你可以同时使用两者 setTimeout()方法在指定的毫秒数后调用函数或计算表达式。

的setTimeout(代码,毫秒,朗)

代码必填。将要执行的功能 millisec 必填。执行代码之前等待的毫秒数 lang 可选。脚本语言:JScript | VBScript | JavaScript

setInterval()方法以指定的时间间隔(以毫秒为单位)调用函数或计算表达式。

setInterval()方法将继续调用该函数,直到调用clearInterval()或窗口关闭。

setInterval()返回的ID值用作clearInterval()方法的参数。

提示:1000毫秒= 1秒。

的setInterval(代码,毫秒,朗)

代码必填。将要执行的功能 millisec 必填。关于执行代码的频率的间隔(以毫秒为单位) lang 可选。 JScript | VBScript |的JavaScript