Javascript 如何使jquery中的$each同步?

Javascript 如何使jquery中的$each同步?,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个ajax请求,当成功时,它有一个对象数组。当我使用$.each循环它时,它异步工作。我在$each内有一个函数。但是代码循环之后,所有的函数都会在循环之后工作。我想循环并执行每个函数 对于链式异步请求,最好使用中实现的接口 对于链式异步请求,最好使用中实现的接口 请注意在$中使用的函数。每次调用;这两个参数都命名为“数据”。第一个参数是循环的索引。第二个是当前项目。使用索引,您可以使用setTimeout将内容稍微分开: 每次调用$时都要小心使用的函数;这两个参数都命名为“数据”。

我有一个ajax请求,当成功时,它有一个对象数组。当我使用$.each循环它时,它异步工作。我在$each内有一个函数。但是代码循环之后,所有的函数都会在循环之后工作。我想循环并执行每个函数



对于链式异步请求,最好使用中实现的接口


对于链式异步请求,最好使用中实现的接口


请注意在$中使用的函数。每次调用;这两个参数都命名为“数据”。第一个参数是循环的索引。第二个是当前项目。使用索引,您可以使用setTimeout将内容稍微分开:


每次调用$时都要小心使用的函数;这两个参数都命名为“数据”。第一个参数是循环的索引。第二个是当前项目。使用索引,您可以使用setTimeout将内容稍微分开:


$中。每个
回调中,参数
数据都会出现两次
$。每个()都不是异步的。ajax请求是@MaximeLaunois,这是什么意思?对不起,我只是个初学者,
get\u user\u rank
做什么?它是否执行另一个ajax请求?每个请求都是同步的,问题是get\u user\u rank不执行什么。听起来您需要使用$.when,但需要查看更多代码以提供帮助。在
$中,每个
回调中,参数
数据都会出现两次
$。每个(
不是异步的。ajax请求是@MaximeLaunois,这是什么意思?对不起,我只是个初学者,
get\u user\u rank
做什么?它是否执行另一个ajax请求?每个请求都是同步的,问题是get\u user\u rank不执行什么。听起来您需要使用$.when,但需要查看更多代码以提供帮助。
get_allprogram_byuser();
function get_allprogram_byuser(){
    $.ajax({
    url: ,
    type: "POST",
    data: {},
    success: function (data) {
        obj = JSON.parse(data);
        filteredarray = obj;
        filteredslice = filteredarray;


        $.each(filteredslice, function (data, data) {
            program_count = data.sp_person_count;
            alert(1);
                get_user_rank(data.sp_token, data.sp_id, data.region_id);
        });
    }
    });
}

function get_user_rank(sp_token, sp_id, region_id){

    $.ajax({
    url: "",
    type: "POST",
    data: {sp_token:sp_token,sp_id:sp_id, region_id:region_id},
    success: function (data) {
        obj = JSON.parse(data);
        result = obj[0].result;
        user_id = obj[0].user_id;
        need_people = obj[0].rank;
        ranks = obj[0].ranks;
        alert('2');
        getuser_from_rank(sp_token, sp_id, region_id)
    }
    });


}


function getuser_from_rank(sp_token, sp_id, region_id){

    $.ajax({
    url: "",
    type: "POST",
    data: {sp_token:sp_token,sp_id:sp_id},
    success: function (data) {
        obj = JSON.parse(data);
        filteredarray = obj;
        filteredslice = filteredarray;
        filtered =  filteredslice.filter(function(data) {
            return data;
        });
        $.each(filtered, function (data, data) {
            data['rank'] = rank_count++;
        });
        alert('3');
    }
    });
}
get_allprogram_byuser().then(function(data) {
    console.log("all done");
    console.log(data)
});

function get_allprogram_byuser(){
    return $.ajax({
        url: ,
        type: "POST",
        data: {},
    }).then(function(data) {
        obj = JSON.parse(data);
        filteredarray = obj;
        filteredslice = filteredarray;
        return Promise.all(filteredslice.map(function(data) {
            return get_user_rank(data.sp_token, data.sp_id, data.region_id);
        });
    });
}

function get_user_rank(sp_token, sp_id, region_id){
    return $.ajax({
        url: "",
        type: "POST",
        data: {sp_token:sp_token,sp_id:sp_id, region_id:region_id},
    }).then(function(data) {
        obj = JSON.parse(data);
        result = obj[0].result;
        user_id = obj[0].user_id;
        need_people = obj[0].rank;
        ranks = obj[0].ranks;
        return getuser_from_rank(sp_token, sp_id, region_id);
    });
}

function getuser_from_rank(sp_token, sp_id, region_id){
    return $.ajax({
        url: "",
        type: "POST",
        data: {sp_token:sp_token,sp_id:sp_id},
    }).then(function(data) {
        obj = JSON.parse(data);
        filteredarray = obj;
        filteredslice = filteredarray;
        filtered =  filteredslice.filter(function(data) {
            return data;
        });
        $.each(filtered, function (data, data) {
            data['rank'] = rank_count++;
        });
        return data;
    });
}