我有一个符号数组,如下所示。 对于数组的每个元素,我正在发出Ajax请求。
var symbols = ["SSS", "SEE"]
$(document).ready(function () {
$.each(symbols, function (index, value) {
loadXMLDoc(value);
});
});
function loadXMLDoc(value) {
$.ajax({
type: 'POST',
url: 'https://ganaga/aaaa/sss',
success: function (data) {}
}
在浏览器控制台中,我看到许多XHR请求处于暂挂状态。 是否可以仅在获取前一个数组元素的响应时才生成下一个Ajax请求?
答案 0 :(得分:2)
我只想使用一点递归:
var symbols = ["SSS", "SEE"]
$(document).ready(function () {
loadXMLDoc(0);
});
function loadXMLDoc(idx) {
value = symbols[idx];
if (value) {
$.ajax({
type: 'POST',
url: 'https://ganaga/aaaa/' + value,
success: function (data) {
//...
loadXMLDoc(idx+1);
}
});
}
}
答案 1 :(得分:2)
在回调函数中调用下一个AJAX调用。
function loadXMLDoc(n) {
var value = symbols[n];
$.ajax({
type: 'POST',
url: 'https://ganaga/aaaa/sss',
success: function (data) {
if (n < symbols.length-1) {
loadXMLDoc(n+1);
}
}
}
}
以:
开头loadXMLDoc(0);
答案 2 :(得分:2)
var symbols = ["SSS", "SEE"]
$(document).ready(function () {
loadXMLDoc(symbols);
});
function loadXMLDoc(symbols) {
if(symbols[0]) {
$.ajax({
type: 'POST',
url: 'https://ganaga/aaaa/sss',
success: function(data){ loadXMLDoc(symbols.slice(1)) }
});
}
}
我的问题中value
没有使用loadXMLDoc
,我想你想要:
url: 'https://ganaga/aaaa/'+ symbols[0],
另外,我会将功能重命名为loadXMLDocs
。