-2
var userQuery = new Parse.Query(Parse.User);
userQuery.limit(500);
if(helpers.isDefined(userSkip)){
userQuery.skip(userSkip);
}
var userCount = 0;
userQuery.find().then(function (users) {
_.each(users, function(user){
console.log("Got user " + user.get("displayName"));
var viewHistoryQuery = new Parse.Query("ViewHistory");
viewHistoryQuery.equalTo("user", user);
viewHistoryQuery.find().then(function(){
console.log("Got here");
}).then(function(){
console.log("View History success");
}, function (error) {
console.log("View History error");
});
userCount++;
});
})
.then(function() {
status.success("Processed " + userCount + " users");
}, function (error) {
status.error(JSON.stringify(error));
});
Got here
永遠不會被打印到控制檯。我得到的唯一的輸出是:解析承諾永遠不會運行_.each()
I2015-08-24T15:04:03.424Z]Got user #####
I2015-08-24T15:04:03.424Z]Got user #####
Input: {}
Result: Processed 500 users
得到的用戶打印多次,我只是哈希了用戶名。沒有太大意義。承諾應該在_.each循環中運行,然後應該打印其中一條消息。它就好像它不存在一樣。我們知道用戶正在被循環訪問,但下一個承諾被忽略。
據我所知,'then'不採取三個參數? – Bergi
你很對。我已經更新了代碼,現在是正確的,但它似乎沒有糾正主要問題。謝謝你指出,雖然。 – JackalopeZero
您知道'_.each'不會自動等待其中創建的任何承諾嗎?查詢開始後,您立即增加'userCount'並轉到下一個。 'Got Here'會在你的「處理過的500個用戶」之後登錄。也許'status.success'確實取消所有正在進行的查詢? – Bergi