带有一个回调的多个循环ajax请求
Multiple looped ajax requests with one callback
与本文一样,我要执行几个ajax请求,然后执行一个操作
然而,不同的是,我所有的ajax请求只相差一个增量参数,如下所示:
$.when(
// ajax requests
// 1
$.ajax({
url:"https://www.aaaaaaa.com?param="+0,
crossDomain: true,
dataType: "jsonp",
success: function (response) {
data = data.concat(response);
}
}),
// 2
$.ajax({
url:"https://www.aaaaaaa.com?param="+2500,
crossDomain: true,
dataType: "jsonp",
success: function (response) {
data = data.concat(response);
}
}),
// 3
$.ajax({
url:"https://www.aaaaaaa.com?param="+5000,
crossDomain: true,
dataType: "jsonp",
success: function (response) {
data = data.concat(response);
}
})
// etc. ~10 times
).then(function() {
// action
console.log(data);
});
就像蟒蛇一样,我不喜欢重复自己10次
我试图制作一个for循环,但似乎不可能在$.when().中编写for循环
有什么想法可以实现吗
我到处找都找不到结果。
非常感谢,
可能应该在$.之前定义一个函数
function createRequest(port) {
return $.ajax({
url:"https://www.aaaaaaa.com?param="+port,
crossDomain: true,
dataType: "jsonp",
success: function (response) {
data = data.concat(response);
}
})
}
然后用在你的$.当
$.when(createRequest(0), createRequest(2500), createRequest(5000));
如果你想用更多的参数动态地创建这个函数调用,你可以为循环创建一个这些请求的数组,然后调用$when.apply(this,array)
$.when.apply(this, your_request_array)
请参阅:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply
希望这能帮助
您可以使用Kriskowal的q实现:https://github.com/kriskowal/q
有一种方法CCD_ 1适合您的需要。
例如:
Q.allSettled(promises)
.then(function (results) {
results.forEach(function (result) {
if (result.state === "fulfilled") {
var value = result.value;
} else {
var reason = result.reason;
}
});
});
Angular的$q
指令基于此
只需将您的承诺放入一个数组:
var promises = [0, 2500, 5000].map(function(n) {
return $.ajax(...); // appending `n` to the URL as required
});
然后调用$.when.apply
:
$.when.apply($, promises).then(...)
传递给.then
回调的参数将是单独的数组,每个数组包含单个$.ajax
回调接收的三个参数。
顺便说一句,您当前的代码将按照调用完成的任何顺序连接数组,而不一定是按照它们开始的顺序。
如果串联的顺序很重要,那么应该使用那些.then
函数参数而不是现有的success
处理程序来创建data
变量:
then(function() {
var data = [];
[].forEach.apply(arguments, function(response) {
data = data.concat(response[0]);
});
});
相关文章:
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 一个ajax循环有两个输出错误innerHTML
- 未执行Ajax循环的Javascript之后的代码
- jQuery延迟了ajax调用的循环
- Chrome浏览器“;挂起”;同时在循环中执行AJAX请求
- Ajax内部的Ajax在循环中
- Ajax json到for循环中
- 带有一个回调的多个循环ajax请求
- 停止循环 AJAX 查询
- 如何在JQueryWhen-Then语句中循环Ajax请求
- 用于循环ajax潜在竞争条件的Javascript
- 循环ajax调用,直到按钮被按下
- 使用延迟和承诺循环ajax调用
- 循环ajax有时只提交
- 如何循环ajax响应并在html中显示它?
- 使用循环AJAX匹配id和子id,并将它们与Neo4j关联
- 如何在jQuery返回的数组内循环Ajax成功
- 如何循环ajax请求(使用jquery)和jsp
- 逐一循环ajax请求并逐一显示结果
- jQuery for循环ajax调用和等待,直到所有完成