问题描述:在使用promise对象获取数据库(mongodb里面的数据)数据后,无法修改异步函数loadData(返回promise对象)外部定义的对象或数组:
求大佬解惑:具体代码如下
let timeLine=req.body.timeLine;// ['2018-1', '2018-2', '2018-3', '2018-4', '2018-5', '2018-6', '2018-7', '2018-8', '2018-9', '2018-10', '2018-11', '2018-12']
let loadDepartment=['南京南','南京所','合肥南','徐州东'];
let result=[];
loadDepartment.forEach((department,index,arr)=>{
async function loadData(condition) {
let client=await getMGClient(url);
let db=client.db(dbName);
let coll=db.collection('JLarrange');
let dataInDB=await coll.find(condition).toArray();
return dataInDB[0];
}
let tempdata=[];
for(let index in timeLine){
console.log(index)
let condition={department,tableName:timeLine[index]}
loadData(condition).then(dataInDB=>{
let monthTime=0;
if(!!dataInDB){
//数据存在
for(let dataindex in dataInDB.data){
monthTime+=dataInDB.data[dataindex].workTime;
}
}
tempdata.push(monthTime)
console.log(tempdata)//这里输出的tempdata有值
})
}
console.log(tempdata)
**//这里输出的tempdata全部为[]**
result.push({department:department,data:tempdata});
})
console.log(result);
异步函数都没有开始处理,打出来的值当然是空了;需要执行完后才有结果