promise的所有用法
这裏是使用 Promise.all():
当你有多个 Promise 事件需要一起执行与完成时,就可以使用 Promise.all;
所以使用的时候,需要把异步函数组合成函数list;
//异步函数function getTrackRawData(trackIndex) { var trackname = res_tracks[trackIndex]['name']; var sql = "SELECT count,lat,lon,ele,speed,distance,time,heading from t_race_gpxfiles_rows where gpxfilename =? ORDER by count;"; var params = [trackname]; return new Promise(function(resolve,reject){ //db操作是异步的 db.all(sql, params, (err, rows) => { //回传结果后,把结果resolve除去,后续会存到Promise.all()的回传值中 resolve(rows); }); }) }//把函数塞到函数的list中 //make functions to promise var function_list = []; for(var i=0;i<res_tracks.length;i++) { function_list.push(getTrackRawData(i)); }//使用promise.all来等待所有函数执行完成 Promise.all(function_list) .then( values => { for(i=0;i<values.length;i++) { res_tracks[i]['data'] = values[i]; } res.json({ "message":"success", "data":res_tracks }) } )