有人可以告诉我如何在无限while循环内运行Ajax函数吗?
while(true){
$.ajax({
type: 'POST',
data: {'constraintId': experimentId},
url: '/calender-generation-status/',
success: function(data){
console.log("inside ajax");
}
});
}
此代码的问题是while循环在成功attr之前一直运行,而成功attr之后的所有语句都没有执行。
答案 0 :(得分:5)
Websockets可能是您正在做的事情的更好的方法,但是当然,如果不了解更多信息就不可能说。不断地对服务器进行XHR调用对于双方来说都是很多工作。
但是请问您的问题:要实现循环,您根本不用循环。相反,您可以从complete
回调开始下一个调用:
function doAjax() {
$.ajax({
type: 'POST',
data: {'constraintId': experimentId},
url: '/calender-generation-status/',
success: function(data){
console.log("inside ajax");
},
complete: doAjax // <===
});
}
或更好:
function doAjax() {
var stop = false;
doCall();
return {
stop: function() {
stop = true;
}
};
function doCall() {
$.ajax({
type: 'POST',
data: {'constraintId': experimentId},
url: '/calender-generation-status/',
success: function(data){
console.log("inside ajax");
},
complete: function() {
if (!stop) {
doCall();
}
}
});
}
}
...使用doAjax
方法将对象返回给stop
的调用者,该方法可用于停止进程。