使用ajax设置超时并清除时间

时间:2015-12-01 07:27:20

标签: jquery ajax

如何使这个功能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) {
}

2 个答案:

答案 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');
    }
  });
}