我有一个Promise和for循环的问题。下面的代码不是顺序地执行:jascript angular for循环在promise后执行
secondQuery.find().then(function(results) {
alert("2")
for (var i in results) {
(function(index){
var object = results[index];
var item_id = results[index].id;
var status = object.get("status");
var event_id = object.get("event_id");
var user_id = object.get("user_id");
var user_id_name = object.get("user_id_name");
var thumbimageurl = "";
var nFacebookFriends = 0;
var nInstagramFollowers = 0;
var nTwitterFollowers = 0;
var query2 = new Parse.Query(User)
query2.equalTo("username",user_id)
return query2.first({
success: function(object) {
alert("3")
var thumbfile = object.get("thumb");
thumbimageurl = thumbfile.url();
nFacebookFriends = object.get('nFacebookFriends');
nInstagramFollowers = object.get('nInstagramFollowers');
nTwitterFollowers = object.get('nTwitterFollowers');
}
}).then(function(){
alert("4")
requests.push({
'thumb': thumbimageurl,
'item_id':item_id,
'status':status,
'event_id':event_id,
'user_id':user_id,
'user_id_name':user_id_name,
'nFacebookFriends':nFacebookFriends,
'nInstagramFollowers':nInstagramFollowers,
'nTwitterFollowers':nTwitterFollowers
})
})
})(i)
}
}).then(function(){
alert('end')
$scope.requests = requests;
$localStorage.requests = requests;
// alert(JSON.stringify(requests))
})
“2”警报,而不是“3”和“4”我直接地“结束”一周期后。有没有办法在下一个承诺之前强制执行for循环?