Javascript 在Jquery中,如何延迟包含异步调用的同步函数的执行?

Javascript 在Jquery中,如何延迟包含异步调用的同步函数的执行?,javascript,jquery,Javascript,Jquery,我很困惑。在本代码的情况下: function prepareit(list){ for(i=0;i<list.length;i++){ var test = list[i]; $.ajax({....}); } } function testit(list){ for(i=0;i<list.length;i++){ var test = list[i]; $.ajax({....});

我很困惑。在本代码的情况下:

function prepareit(list){
    for(i=0;i<list.length;i++){
         var test = list[i];
         $.ajax({....});
    }
}

function testit(list){
    for(i=0;i<list.length;i++){
         var test = list[i];
         $.ajax({....});
    }
}

$(document).ready(function() {
    var list = ['ti','meti','medes','fra','u','w','ro','sit','hd','i'];
    prepareit(list);
    testit(list);
});
功能准备(列表){

对于(i=0;i您可以在
prepareit
中的ajax请求的success函数中调用
testit
,如下所示:

function prepareit(list){
    for(i=0;i<list.length;i++){
         var test = list[i];
         $.ajax({ success: function (data) { testit(list); } });
    }
}

function testit(list){
    for(i=0;i<list.length;i++){
         var test = list[i];
         $.ajax({....});
    }
}

$(document).ready(function() {
    var list = ['ti','meti','medes','fra','u','w','ro','sit','hd','i'];
    prepareit(list);
    //testit(list);
});
功能准备(列表){

对于(i=0;i您可以在
prepareit
中的ajax请求的success函数中调用
testit
,如下所示:

function prepareit(list){
    for(i=0;i<list.length;i++){
         var test = list[i];
         $.ajax({ success: function (data) { testit(list); } });
    }
}

function testit(list){
    for(i=0;i<list.length;i++){
         var test = list[i];
         $.ajax({....});
    }
}

$(document).ready(function() {
    var list = ['ti','meti','medes','fra','u','w','ro','sit','hd','i'];
    prepareit(list);
    //testit(list);
});
功能准备(列表){

对于(i=0;i创建一个延迟对象,该对象在所有ajax请求完成时解析

function prepareit(list){
    var defArr = [];
    for(i=0;i<list.length;i++){
         var test = list[i];
         defArr.push($.ajax({....}));
    }
    return $.when.apply($,defArr);
}

function testit(list){
    var defArr = [];
    for(i=0;i<list.length;i++){
         var test = list[i];
          defArr.push($.ajax({....}));
    }
    return $.when.apply($,defArr);
}

$(document).ready(function() {
    var list = ['ti','meti','medes','fra','u','w','ro','sit','hd','i'];
    prepareit(list).done(function(){
        testit(list).done(function(){
            alert("All done!");
        });
    });
});
功能准备(列表){
var defArr=[];

对于(i=0;i创建一个延迟对象,该对象在所有ajax请求完成时解析

function prepareit(list){
    var defArr = [];
    for(i=0;i<list.length;i++){
         var test = list[i];
         defArr.push($.ajax({....}));
    }
    return $.when.apply($,defArr);
}

function testit(list){
    var defArr = [];
    for(i=0;i<list.length;i++){
         var test = list[i];
          defArr.push($.ajax({....}));
    }
    return $.when.apply($,defArr);
}

$(document).ready(function() {
    var list = ['ti','meti','medes','fra','u','w','ro','sit','hd','i'];
    prepareit(list).done(function(){
        testit(list).done(function(){
            alert("All done!");
        });
    });
});
功能准备(列表){
var defArr=[];

对于(i=0;在这种情况下,它似乎无效,因为在所有“prepareit”调用结束后,我需要执行“testit”。在您的代码中,在任何“prepareit”迭代中,运行“testit”的所有CAL@user1824310是的,正是,就像我在编辑中提到的。有什么理由你必须对列表中的每个项目进行单独的ajax调用吗?在这种情况下,这似乎是无效的,因为我需要在所有“prepareit”调用结束后执行“testit”。在你的代码中,“prepareit”的任何迭代都会运行“testit”的所有CAL@user1824310是的,正是,就像我在编辑中提到的。你有什么理由必须对列表中的每个项目进行单独的ajax调用吗?@user1824310如果对你有帮助,请确保通过单击答案旁边的绿色复选标记将其标记为接受答案!@user1824310如果对你有帮助,请确保通过单击将其标记为接受答案g答案旁边的绿色复选标记!