如何在多 Jquery Get 函数中等待
How to wait inside multile Jquery Get Function
在下面的代码中,我遍历每个域并通过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>
相关文章:
- 如何在jqGrid中使saveRow函数等待editRow函数
- 让 JavaScript 函数等待 Jquery 对话框模态的结果
- 如何在函数完成后使用 jQuery 进行动画处理 - 让第二个函数等待
- 如何使函数等待回调完成
- 让jquery函数等待它'的上一个呼叫已解决
- Javascript/jQuery使函数等待回调后再继续
- 让一个函数等待另一个变量
- 如何强制异步函数等待,直到完成
- 使函数等待/暂停;直到另一个结束
- 需要函数等待事件处理程序完成后再执行下一个函数
- Javascript函数等待另一个函数完成
- Javascript:让函数等待查询完成
- 我需要把'return'casper.then'块,让父函数等待子函数完成执行
- 使函数等待直到元素存在
- 美元.Ajax成功函数等待
- 如何让我的javascript函数等待html元素渲染
- 如何强制函数等待某个事件发生
- javascript/jquery:迭代调用函数;等待之前的通话结束
- 如何让JS函数等待执行
- 如何让NodeJs函数等待