我已为此代码编码
userQuery.find().then(function(users){
users.forEach(function(user){
//some query and promises with the user object.
});
}).then(function(){
//func2
})
当所有用户的查询完成或循环完成时,func2将运行吗?
我希望在循环中的所有查询完成后运行一个函数 我怎么能这样做?
由于
答案 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 (){};
}
});