繁体   English   中英

Javascript:jquery回调的等待循环

[英]Javascript: wait loop for jquery callback

我有一个像下面的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毫秒后发送另一个数据请求后,获取响应完成。

您可以使用带有递归setTimeout的简单函数递归:

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


getBidsLoop (); // Start

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

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);
    });
  }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM