第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

javascript promise內(nèi)部賦值修改外部引用類型值時不生效

javascript promise內(nèi)部賦值修改外部引用類型值時不生效

阿晨1998 2019-03-09 14:15:36
問題描述:在使用promise對象獲取數(shù)據(jù)庫(mongodb里面的數(shù)據(jù))數(shù)據(jù)后,無法修改異步函數(shù)loadData(返回promise對象)外部定義的對象或數(shù)組:求大佬解惑:具體代碼如下    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){                //數(shù)據(jù)存在                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);
查看完整描述

1 回答

?
開心每一天1111

TA貢獻1836條經(jīng)驗 獲得超13個贊

異步函數(shù)都沒有開始處理,打出來的值當(dāng)然是空了;需要執(zhí)行完后才有結(jié)果


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 = [];

let promises = loadDepartment.map((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 = [];

    let promises1 = []

    for (let index in timeLine) {

        console.log(index)

        let condition = {

            department,

            tableName: timeLine[index]

        }

        promises1.push(loadData(condition).then(dataInDB => {

            let monthTime = 0;

            if (!!dataInDB) {

                //數(shù)據(jù)存在

                for (let dataindex in dataInDB.data) {

                    monthTime += dataInDB.data[dataindex].workTime;

                }

            }

            tempdata.push(monthTime)

            console.log(tempdata) //這里輸出的tempdata有值

        }))


    }

    console.log(tempdata) //這里輸出的tempdata全部為[]**

    return Promise.all(promises1).then(() => {

        result.push({

            department: department,

            data: tempdata

        });

    })

})

Promise.all(promises).then(() => {

    console.log(result);

})


查看完整回答
反對 回復(fù) 2019-03-19
  • 1 回答
  • 0 關(guān)注
  • 1396 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號