【发布时间】:2016-12-02 18:18:54
【问题描述】:
我对 Promise 和 for 循环有疑问。以下代码不按顺序执行:
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 循环在下一个承诺之前执行?
【问题讨论】:
标签: javascript angularjs for-loop promise