如何使这个功能getUsers
每5秒调用一次?它应该等待ajax调用完成,然后再次启动它,直到ajax返回空。
var myVar;
function myFunction() {
myVar = setTimeout(alertFunc, 3000);
}
function getUsers(){
var dbBatchSize = 1000;
var startIndex = 10000;
var exit = false;
$.ajax({
url: '" . Yii::app()->createUrl('/Search/GetListOfUsers/') . "',
data:'startIndex='+startIndex+'&dbBatchSize='+dbBatchSize,
type:\"POST\",
success: function (data) {
console.log('polling');
},
error: function() {
console.log('error');
}
});
}
当ajax返回data.length == 4
时,此设置超时功能应该停止
if (data.length == 4) {
}
答案 0 :(得分:0)
使用clearTimeout
success: function (data) {
if (data.length == 4)
clearTimeout(myVar);
}
答案 1 :(得分:0)
由于您需要等待ajax完成,我希望您在成功时使用setTimeout。此外,您的代码中没有重复的呼叫设置。
您可能需要使用setInterval重复执行。
function getUsers() {
var dbBatchSize = 1000;
var startIndex = 10000;
var exit = false;
$.ajax({
url: '" . Yii::app()->createUrl(' / Search / GetListOfUsers / ') . "',
data: 'startIndex=' + startIndex + '&dbBatchSize=' + dbBatchSize,
type: \ "POST\",
success: function(data) {
if (data.length != 4) {
setTimeout(getUsers, 5000); //repeat execution
}
},
error: function() {
console.log('error');
}
});
}