javascript - 如何在多个Jquery Get函数中等待

标签 javascript jquery html json get

在下面的代码中,我循环遍历每个域并通过 jQuery GET 函数执行一些操作。循环是同步的。如何让每个循环在执行下一个 GET 请求之前等待 5 秒。

 jsons = ["123.com","234.com","456.com"]


    jQuery.each(jsons, function(key,ele) {
    var maindomain = ele; 
    var apis= "https://api.panel.com/search?q="+maindomain;
    $.get(apis, function(source) { 

    if(source == "yes")
    {
    $.get("https://database.com/update.php?domain="+maindomain, function(response) { 
    console.log("successs");
    });
    }

    //SLEEP 5 seconds Here
    });

最佳答案

您可以使用.queue()$.when()setTimeout().dequeue()

var jsons = ["123.com","234.com","456.com"];

$({}).queue("requests", jsons.map(function(request) {
  return function(next) {
    // do ajax stuff
    $.get("https://api.panel.com/search?q=" + request)
    .then(function(source) {
       if (source === "yes")
       return $.get("https://database.com/update.php?domain=" + maindomain)
    })         
    .then(function() {
      // call `next` function after `5000ms` timeout
      setTimeout(next, 5000)
    })
  }
})).dequeue("requests")

var jsons = ["123.com","234.com","456.com"], res = [];

var fn = function(arg) {
  return $.Deferred(function(d) {
    d.resolve([arg, "success", {}])
  }).then(function(data) {
    res.push(data); return data
  })
}

$({}).queue("requests", jsons.map(function(request) {
  return function(next) {
    // do ajax stuff here
    fn(request).then(fn.bind(null, request))
    .then(function() {
      console.log(res)
      // call `next` function after `5000ms` timeout
      setTimeout(next, 5000)
    })
  }
})).dequeue("requests")
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>

关于javascript - 如何在多个Jquery Get函数中等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35716490/

相关文章:

javascript - 我如何将 5 个点击功能转换为一个具有更改值的功能

javascript - Jade javascript block (服务器端)

Javascript:即使使用 jquery.getScript() 也会出现随机 "Object has no method"错误

javascript - 如何使用 JQuery 检测文件输入是否选择了文件?

javascript - 如何让javascript在Galaxy S3上流畅运行?

html - 如何控制HTML区域向右?

html - 在 WordPress 中的移动设备上无法点击的链接

javascript - 当使用 React 单击另一个详细信息时,如何自动关闭打开的详细信息标签?

javascript - MVC - 使用 Jquery 在部分 View 之间传递 ViewModel

javascript - 元素根据滚动 float