簡體   English   中英

為什么在foreach函數回調中對全局變量所做的更改未反映出該回調

[英]Why don't changes made to a global variable in a foreach function callback reflect oustide the callback

我正在嘗試從mongoDB地圖集檢索一些文檔,下面是代碼:

get('/:page/bucket_names', (req, res) => {
    var page = req.params.page;
    var pageBuckets = [];
    MongoClient.connect(uri, (err, client) => {
        if (err) res.send('error:' + err);
        const db = client.db("cms");
        db.collection(page).find({ $or: [{ type: 'single' }, { type: 'carousel' }, { type: 'freelist' }] }, (err, result) => {
            if (err) res.send('error');
            else {
                result.forEach(el => {
                    pageBuckets.push(el);
                    console.log(pageBuckets) //1
                })
                console.log(pageBuckets)  //2
            }
        })
        client.close();
    })
})

第一個console.log輸出更新的pageBuckets數組,而第二個console.log輸出一個空數組。 我無法理解問題所在。

原來第二個console.log在foreach循環之前被執行了,所以用下面的代碼修復它:

result.forEach(el =>{
        pageBuckets.push(el);
          console.log(pageBuckets) //1
      }).then(() =>{
        console.log(pageBuckets); //2
      })

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM