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