Javascript:jquery回调的等待循环

时间:2019-04-29 10:07:50

标签: javascript jquery

我有一个如下所示的ajax:

$.get('/api/get-data)
.then(function (res) {
    console.log(res);
});

我想编写一个循环来获取数据,像这样:

while (true) {
    $.get('/api/lastbids/' + auctionId)
    .then(function (res) {
        console.log(res);
    });
}

我希望在每个请求之间设置延迟,我可以使用setinterval,但我希望在500毫秒后发送另一个数据请求后,获取响应完成。

2 个答案:

答案 0 :(得分:2)

您可以使用简单的函数递归和重复的setTimeout

function getBidsLoop () {
  $.get('/api/lastbids/' + auctionId).then(function (res) {
    console.log(res);
    setTimeout(getBidsLoop, 500); // << Recursive call
  });
}


getBidsLoop (); // Start

答案 1 :(得分:0)

您可以为每个请求使用回调

var firstRequest = function(callback) {
      // some random endpoint for result
      $.get('https://pokeapi.co/api/v2/pokemon/1/', function(data) {
        callback(data);
      }).fail(function() {
        callback(false);
      });
    },
    secondRequest = function(callback) {
      // some random endpoint for result
      $.get('https://pokeapi.co/api/v2/pokemon/2/', function(data) {
        callback(data);
      }).fail(function() {
        callback(false);
      });
    };


// first, run first request, wait for response, then run second request. finally grab both request's responses. 
firstRequest(function(firstResult){
  if (firstResult) {
    // you can wrap the code below with setTimeout if you want
    secondRequest(function(secondResult) {
      console.log(firstResult, secondResult);
    });
  }
});