0

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

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

4

5 回答 5

2

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

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

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

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

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

于 2013-10-03T10:25:49.180 回答
1

仅当前一个调用已成功完成时,您才可以对进行 ajax 调用的函数setInterval执行60 秒(60000 毫秒)而不是使用 a (因此,例如,如果您的服务器返回,您可以避免进行无用的 ajax 调用setTimeout给定资源的 404 或 500 状态)

var xhr = new XMLHttpRequest();

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

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

doAjaxCall();
于 2013-10-03T10:32:45.453 回答
0

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

设置超时(代码,毫秒,语言)

代码必需。将被执行的函数 毫秒必需。执行代码前等待的毫秒数 lang可选。脚本语言:JScript | VB脚本 | JavaScript

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

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

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

提示:1000 毫秒 = 1 秒。

setInterval(代码,毫秒,语言)

代码 必需。将被执行的函数 毫秒 必需。执行代码的频率间隔(以毫秒为单位) lang 可选。脚本 | VB脚本 | JavaScript

于 2013-10-03T10:36:36.897 回答
0

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

$("/url/to/your/AJAX").done(function(data) {
  // do what you need to do with the data now
})
于 2013-10-03T10:29:53.917 回答
0

setTimeout()和它的兄弟setInterval()

setTimeout - 调用一次

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

例子:

setTimeout(function() { doStuffOnce(); }, 1000);
setInterval(function() { doStuff(); }, 1000);
于 2013-10-03T10:25:57.647 回答