【发布时间】:2017-12-03 15:13:54
【问题描述】:
我有一个 Ajax 调用,我想多次运行它,直到它满足特定的 if 条件。 AJAX 调用为您提供作业状态 - 正在运行、已排队和已完成。 我无法获得作业状态 - 完成。获得运行状态后,需要几分钟才能获得状态完成。到目前为止,我已经尝试了以下 JS。我还想在满足 if 条件后打破循环。我也不确定我是否应该运行 100 次电话,因为它可能需要更多时间。感谢您的帮助。
我的 JS:
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);
});
【问题讨论】:
-
看
Promises。未能使用setInterval检查条件。 -
这被称为长轮询,基本上包括敲击服务器,直到它为您提供您正在等待的值。更聪明的方法是使用 websockets,这将允许服务器在完成时通知客户端。
-
调用 100 次似乎是个坏主意......
标签: javascript json ajax alteryx