如 this article 所示,我有几个 ajax 请求要执行,然后执行 1 个操作。
然而,不同之处在于我的所有 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);
});
就像 python 一样,我不喜欢重复自己 10 次。
我尝试创建一个 for 循环,但似乎不可能在 $.when() 中编写 for 循环。
有什么想法可以实现这一点吗?
到处找都没有结果。
非常感谢,
最佳答案
可能应该工作的是在 $.when 之前定义一个函数,如下所示:
function createRequest(port) {
return $.ajax({
url:"https://www.aaaaaaa.com?param="+port,
crossDomain: true,
dataType: "jsonp",
success: function (response) {
data = data.concat(response);
}
})
}
然后在你的 $.when 中使用它
$.when(createRequest(0), createRequest(2500), createRequest(5000));
如果您想使用更多参数动态创建此函数调用,您可以创建这些请求的 for 循环数组,然后调用 $.when.apply(this, array)
$.when.apply(this, your_request_array)
参见:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply
希望这有帮助
关于javascript - 带有一个回调的多个循环 ajax 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28632608/