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

what is the proper way to auto call function in Javascript after an interval of time?

本文关键字:方法 是什么 函数 JavaScript 一段时间 调用      更新时间:2023-09-26

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

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

如果需要函数每 60 秒运行一次,可以使用setInterval()

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

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

setTimeout(function() {
    /* AJAX call here. */
}, 60000);
对于两者,60,000

是毫秒延迟(60,000ms = 1 分钟(。

您可以使用 setInterval 对仅当上一个调用成功完成时才进行 ajax 调用的函数执行 60 秒(60000 毫秒(的setTimeout(因此,例如,如果您的服务器返回给定资源的 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();

setTimeout(( 和它的兄弟 setInterval((

设置超时 - 调用一次

setInterval - 每指定一次调用

例子:

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

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

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

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

setTimeout(code,millisec,lang(

代码 必需。将执行的函数毫秒必填。执行代码之前等待的毫秒数自选。脚本语言:JScript |VBScript |JavaScript

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

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

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

提示:1000 毫秒 = 1 秒。

setInterval(code,millisec,lang(

代码 必需。将执行的函数毫秒 必填。执行代码的频率的间隔(以毫秒为单位( 自选。JScript |VBScript |JavaScript