初学者,实在搞不清楚了,请教各位 问题写在注释里了
补充,大致知道咋回事了,for循环里面还有一个数据库查询,两个异步嵌套,立马就懵逼了解决方案在后面,往下拉
// 有学校、部门两个表,学校表字段是id name,部门表的字段是id name school_id // 获取学校列表,然后根据学校id去查询每个学校下的部门数量,再给每个学校增加部门数量depNum,组成新的学校对象,字段有id name depNum,然后渲染模板
var listSchools = async () => {
return new Promise((resolve, reject)=> {
pool.query('SELECT * FROM schools
', function (err, rows) {
if (err) {
console.log(err);
reject(err);
}
else{
resolve(rows);
}
});
});
}
// 现在卡在这一步了,不知道怎么实现先for循环获取到部门数量之后再渲染模板
// 也就是说不知道怎么用Promise写for循环
var listDepartments = async schools => {
for(let school of schools){
pool.query(‘SELECT * FROM departments
WHERE school_id = ?’, school.id, function(err, rows) {
school.depNum = rows.length; //获取每个学校的部门数量
});
}
}
listSchools().then(listDepartments).then(//渲染模板).catch(err=>{console.log(err)})
感谢楼下的指点,问题已经解决了,贴出最终代码