你好,我是Promises的新手,並且在如何等待for循環中的所有promise後纔去下一個然後)。我見過幾個promise.all示例,但我不清楚如何使它們適用於我的以下代碼。它現在轉到for循環之後的next(),並在for循環完成之前解決。任何幫助表示讚賞!Promise for loops/promise.all,在節點中使用psql(pg-promise)
我正在使用pg-promise(帶有承諾的psql)。
原始代碼:
function getTeamMembers(aTeam) {
let promise = new Promise(function(resolve, reject) {
db.getTeamMembers(aTeam.tid) //return sql results rows
.then(function(rows){
for(let i=0; i<rows.length; ++i) { //loop through each result row
getUserByUsername(rows[i].username)
.then(function(cfUser) { //add user from row to aTeam object
aTeam.addMember(cfUser);
})
.catch(function(e) {
reject(e);
});
}
})
.then(function(){
console.log(aTeam); //confirm added properly
resolve(aTeam); //resolve object
})
.catch(function(e) {
console.log('addMemberToTeamByUsername: '+e.stack);
reject(e);
});
});
return promise;
}
我不知道誰降低了這一點。但是,也許你應該添加一些代碼? – Bergi
@Bergi,是的,我正忙着回答工作,當有機會的時候,會進一步細化。也被第一個答案作者(現已刪除)的批評無意中發現。我想這只是一個糟糕的一天。 –
嗨維塔利 - 你能提供一些代碼作爲例子嗎?我很想看到它!我會看看你的建議,謝謝你幫助提升我的知識和代碼! –