用循环解析承诺

时间:2015-10-12 12:35:28

标签: javascript parse-platform

我已为此代码编码

userQuery.find().then(function(users){

 users.forEach(function(user){

 //some query and promises  with the user object.

  });

 }).then(function(){
    //func2

 })  

当所有用户的查询完成或循环完成时,func2将运行吗?

我希望在循环中的所有查询完成后运行一个函数 我怎么能这样做?

由于

2 个答案:

答案 0 :(得分:1)

你必须将你在forEach中的promises存储在一个数组中并返回func2的承诺,如下所示:

userQuery.find().then(function(users){
    var promises = [];
    users.forEach(function(user){
        //some query and promises  with the user object.
        var promise = user.doSomethingAsync()
            .then(function anotherThing() {

            });
        promises.push(promise);
    });

    return Promise.all(promises);
}).then(function(){
    //func2
})

我在示例中使用了Promise.all,但我不知道你正在使用什么库。

答案 1 :(得分:0)

var lastFun = null ;

userQuery.find().then(function(users){

   users.forEach(function(user){
     if (lastFun !== null)
        lastfun();//it will be your last function
     else 
        lastFun = true;
   });

}).then(function(){
   if (lastFun === true){
       //call your function here because this is now last function
   } else {
       lastfun = function (){};
   }
});