解析承诺永远不会在_.each()中运行

时间:2015-08-24 14:58:48

标签: javascript loops parse-platform promise

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永远不会打印到控制台。我得到的唯一输出是:

I2015-08-24T15:04:03.424Z]Got user #####
I2015-08-24T15:04:03.424Z]Got user #####
Input: {}
Result: Processed 500 users

用户被多次打印,我只是删除了用户名。真的没有多大意义。承诺应该在_.each循环中运行,而thenable应该打印其中一条消息。它表现得好像它不存在。我们知道用户正在被循环访问,但是下一个承诺被忽略了。

0 个答案:

没有答案