首页 > 解决方案 > 在 ForEach 中遇到同步问题

问题描述

我使用这个功能

        await getTestData(entry).then(res=> {
            for(let i = 0; i < res.length; i++){
                //console.log(res[0].data)
                console.log("line");
            }

        }).catch(error => {
            console.log("MongoGetError");
        });
  console.log("end");

结果是

  1. 线
  2. 结尾

现在我必须把它放到一个.forEach()循环中。我试过了:

    testcases.forEach(async function(entry,index) {


        await getTestData(entry).then(res=> {
            for(let i = 0; i < res.length; i++){
                //console.log(res[0].data)
                console.log("line");
            }

        }).catch(error => {
            console.log("MongoGetError");
        });

    });

    console.log("End");

但结果是:

  1. 结尾
  2. 线
  3. 线

最后得到什么是我的错

  1. 线
  2. 线
  3. 结尾

标签: node.jsasync-awaitsynchronization

解决方案


注意 - 您已经在返回类似 map(); 的方法中进行了迭代。forEach() 不返回任何内容
第 1 步 - 将 map() 放入 promise.all() 方法第 2 步 - 您必须通过await.then()或任何其他子进程
来持有 promise.all()


推荐阅读