Javascript 当我执行循环时,AngularJs/Ajax索引正在更改
我有一个由2个ajax请求创建的数组Javascript 当我执行循环时,AngularJs/Ajax索引正在更改,javascript,ajax,angularjs,loops,Javascript,Ajax,Angularjs,Loops,我有一个由2个ajax请求创建的数组 var myId = 13; var array = []; var checkIFfollowing = function(id, username){ UserService.checkIfFollowing(id, myId) .success(function (data) { var post = { is_following : data, //boolean username : use
var myId = 13;
var array = [];
var checkIFfollowing = function(id, username){
UserService.checkIfFollowing(id, myId)
.success(function (data) {
var post = {
is_following : data, //boolean
username : username
}
array.push(post);
}).
error(function(error) {
//error
});
}
UserService.GetUserById(user_id)
.success(function (data) {
angular.forEach(data, function(post){
checkIfFollowing(post.id, post.username)
})
}).
error(function(error) {
//error
});
数据结构始终按如下方式返回:
[{id:1, username:'ed'},{id:2, username:'joe'},{id:3, username:'bob'}]
但在循环之后,索引会发生变化,但很多时候,它们都是相同的索引。是否有办法使第二个UserService始终保持一致。CheckIfFollow()异步返回结果,以便填充数组的顺序将发生更改。一种有效的方法是维护一个索引,并在处理完所有项后按索引对数组进行排序。示例代码如下:
var myId = 13;
var array = [];
var dataLength;
var checkIFfollowing = function (index, id, username) {
UserService.checkIfFollowing(id, myId)
.success(function (data) {
var post = {
is_following: data, //boolean
username: username,
index: index
}
array.push(post);
if (dataLength - 1 === index) {
array.sort(function (a, b) { return a.index - b.index })
}
}).error(function (error) {
//error
});
}
UserService.GetUserById(user_id)
.success(function (data) {
dataLength = data.length;
data.forEach(function (post, index) {
checkIfFollowing(index, post.id, post.username)
})
}).error(function (error) {
//error
});
第二个UserService.checkIffollowing()异步返回结果,因此填充数组的顺序将发生更改。一种有效的方法是维护一个索引,并在处理完所有项后按索引对数组进行排序。示例代码如下:
var myId = 13;
var array = [];
var dataLength;
var checkIFfollowing = function (index, id, username) {
UserService.checkIfFollowing(id, myId)
.success(function (data) {
var post = {
is_following: data, //boolean
username: username,
index: index
}
array.push(post);
if (dataLength - 1 === index) {
array.sort(function (a, b) { return a.index - b.index })
}
}).error(function (error) {
//error
});
}
UserService.GetUserById(user_id)
.success(function (data) {
dataLength = data.length;
data.forEach(function (post, index) {
checkIfFollowing(index, post.id, post.username)
})
}).error(function (error) {
//error
});