如何用Promise控制for循环的异步流程?
发布于 8 小时前 作者 zbsccc 43 次浏览 最后一次编辑是 7 小时前 来自 问答

初学者,实在搞不清楚了,请教各位 问题写在注释里了

补充,大致知道咋回事了,for循环里面还有一个数据库查询,两个异步嵌套,立马就懵逼了

Snip20170103_2.png

// 有学校、部门两个表,学校表字段是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)})

1 回复
回到顶部