gpt4 book ai didi

javascript - 检查任务是否完成

转载 作者:行者123 更新时间:2023-11-30 06:01:17 25 4
gpt4 key购买 nike

我有一个 javascript 函数,用于检查任务是否已完成。任务完成后,服务器上的文件中会有完成记录。该函数应该以一定的延迟(可能增加)对服务器进行递归调用,直到它在文件中获得完成记录。下面给出的代码以小于一秒的间隔对服务器进行过多调用来自 Web 控制台的示例: [20:06:21.202] [20:06:21.563] [20:06:21.990]但是任务在变量 waittime 值变得等于 ma​​x_waittime 时变得竞争。尽管对于测试用例来说,总体输出符合预期,但函数有问题。我哪里错了?

 function check_status(time,div_id,filename) {

var status =0;
var waittime=time;

var max_waittime=11000000;
if (waittime < max_waittime){waittime=waittime+1000000; }

$.ajax({
type: "GET",
async: false,
url: "code_on_server_checking_file.php",
data: "f="+filename,
dataType: "text",
success: function(content) {

if (content ) {
// stuff related to output of the result
....
return status=1;
}
else {return status=0;}
}
});

if (status == 0 && waittime < 20000000){
setTimeout(check_status(waittime,div_id,filename),waittime);
}
else {alert('check_status passed!'+status+'|'+waittime);}
}

最佳答案

您需要将 check_status 传递给 setTimeout,而不是通过调用 check_status(...) 返回的值。由于您需要将参数传递给check_status,因此使用匿名函数:

 setTimeout(function () {
check_status(waittime, div_id, filename);
}, waittime);

关于javascript - 检查任务是否完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8373318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com