项目用的nodejs来做 遇到一个问题求大神帮忙 查用户信息的时候因为要同时查询好几张表,所以就需要一次执行多个sql语句,这样就需要很多个嵌套函数了,还有最重要就是因为需要根据表中的每一条数据来查出相对应的数据,所以需要写出个循环来依次迭代查出的数据,并进行数据查询,实现方式 就是加了嵌套跟加了状态控制,功能虽然实现了,但是代码真是惨不忍睹!!贴出代码 dbService.psQuery(sql, [userId], function (rows) { user.userInfo = rows[0]; sql = sqls['user']['getUserPageShowList']['sql']; dbService.psQuery(sql, [userId], function (rows) { user.playerList = rows; sql = sqls['user']['getUserPageActionList']['sql']; /获取用户的动态信息/ dbService.psQuery(sql, [userId], function (rows) { sql = sqls['action']['getActionImgById']['sql']; var lock = 0; for (var i = 0; i < rows.length; i++) { /根据动态信息来获取动态中的图集信息/ dbService.psQuery(sql, rows[i].ACTIONID, function (imgList) { if (imgList && imgList.length > 0) { rows[lock].imgList = imgList; } else { rows[lock].imgList = {}; } lock++; if (lock >= rows.length) { user.actionList = rows; /获取用户的图集信息/ sql = sqls['user']['getUserPageAlbumList']['sql']; dbService.psQuery(sql, [userId], function (rows) { sql = sqls['album']['getAlbumImgById']['sql']; var lock = 0; for (var i = 0; i < rows.length; i++) { dbService.psQuery(sql, rows[i].ALBUMID, function (imgList) { if (imgList && imgList.length > 0) { rows[lock].imgList = imgList; } else { rows[lock].imgList = {}; } lock++; if (lock >= rows.length) { user.albumList = rows; fn(user); } }); } });
}
});
}
});
});
});
小弟一直是做java开发的 刚学node 想想如果是同步执行的话的就简单多了吧 希望在大神们帮个忙能出个更好办法让这些代码解脱了啊