如何多次运行javascript函数直到满足if条件
我有一个Ajax调用,我想运行多次,直到它满足特定的if条件。AJAX调用为您提供作业状态Running、Queued和Complete。 我无法获取作业状态-完成。获得运行状态后,需要几分钟才能完成状态。到目前为止,我已经尝试了以下JS。我还想在满足if条件后中断循环。我也不确定我是否应该打100次电话,因为这可能需要更多的时间。谢谢你的帮助 我的JS:如何多次运行javascript函数直到满足if条件,javascript,json,ajax,alteryx,Javascript,Json,Ajax,Alteryx,我有一个Ajax调用,我想运行多次,直到它满足特定的if条件。AJAX调用为您提供作业状态Running、Queued和Complete。 我无法获取作业状态-完成。获得运行状态后,需要几分钟才能完成状态。到目前为止,我已经尝试了以下JS。我还想在满足if条件后中断循环。我也不确定我是否应该打100次电话,因为这可能需要更多的时间。谢谢你的帮助 我的JS: var pollForJob= gallery.getJob(jobId, function(job){ var jobStat=j
var pollForJob= gallery.getJob(jobId, function(job){
var jobStat=job.status;
console.log(jobStat);
if(jobStat=="Complete"){
alert("Complete");
} else {
// Attempt it again in one second
setTimeout(pollForJob, 1000);
console.log("still working");
console.log(jobStat);
}
}, function(response){
var error = response.responseJSON && response.responseJSON.message ||
response.statusText;
alert(error);
// Attempt it again in one second
setTimeout(pollForJob, 1000);
});
正如Jeremy Thille所说,这叫做长时间投票。一种简单的方法是创建一个函数,用于向服务器发出调用。然后,如果失败,则稍后使用将另一个请求排队
function pollForJob() {
gallery.getJob(jobId, function(job) {
var jobStat = job.status;
if (jobStat == "Complete") {
alert("Complete");
} else {
// Attempt it again in one second
setTimeout(pollForJob, 1000);
}
}, function(response) {
var error = response.responseJSON && response.responseJSON.message || response.statusText;
console.error(error);
// Attempt it again in one second
setTimeout(pollForJob, 1000);
});
}
pollForJob();
看看
承诺
。如果失败,请使用setInterval
检查该条件。这称为长轮询,基本上包括敲打服务器,直到它给出您等待的值。一个更聪明的方法是使用WebSocket,这将允许服务器在完成时通知客户端。调用100次似乎不是一个好主意……为什么要浪费1秒钟?@Priya它不必那么长。如果你认为你会在那之前得到回应,那就去做吧。但是,如果您不希望在200毫秒内得到有效响应,那么每隔50毫秒点击服务器是没有意义的。您好,迈克,感谢您的回答,因为某种原因,此解决方案不起作用。我也试过设置间隔。它只是没有检测到ifcondition@dpr如果您没有点击If
语句,请检查服务器上发生了什么。您必须点击错误部分。@dpr不要忘记第一次调用pollForJob
。我会更新我的答案来说明这一点。