Quantcast
Channel: CNode:Node.js专业中文社区
Viewing all articles
Browse latest Browse all 14821

如何用Promise控制for循环的异步流程?(已解决)

$
0
0

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

补充,大致知道咋回事了,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)})

感谢楼下的指点,问题已经解决了,贴出最终代码 Snip20170103_7.png


Viewing all articles
Browse latest Browse all 14821

Trending Articles