我需要执行3个ajax请求。我知道默认情况下它们恰好是异步的(并且使它们同步会弄乱虚拟机,所以我不想这样做。)我这样做的方法是调用一个函数三次传递变量。
result = '';
parse(var1);
parse(var2);
parse(var3);
view();
function parse(variable) {
//ajax request here
$.ajax({
type: 'POST',
url: 'script.php',
data: {variable: variable},
success: function (data) {
//result stored in a global variable
result += data;
}
});
}
function view() {
//do something with result
}
但现在,当结果未完成时, view() 会立即触发。我如何设置它们一个接一个地发生?我读到了有关回调的内容,但它们非常令人困惑,因为我没有 3 个不同的函数,而只有一个采用不同的变量。
最佳答案
您可以将变量存储在数组中并使用函数来进行 ajax 调用:
var variables = [var1, var2, var3];
function callParse() {
if(variables.length) {
var currentVar = variables.shift();
parse(currentVar);
}
else {
view();
}
}
function parse(variable){
//ajax request here
$.ajax({
type:"POST",
url:'script.php',
data:{variable:variable},
success:function(data)
{
result+=data;
callParse();
}
});
}
function view(){
//do something with result
}
关于javascript - 如何在 Javascript 中排序递归回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37870188/