在异步函数中将数据从 foreach 推送到其中后显示空数组

showing empty array in after pushing data from foreach into it in asynchronous function

我是 async/await 的新手。当我打印一个数组时 console.log 显示一个空数组 [] 但在循环内, console.log 显示数据。谁能帮我解决我哪里出错了。

    commandbody.forEach(async (command) => {
        const arrayC = await commandsModel.getbyId(command);
            cmdArray.push(arrayC);
    });
    console.log(cmdArray);

forEach 函数不是 async-aware。您将需要使用一个简单的 for 循环:

for( let i = 0; i < commandbody.length; i++ ) {
    let arrayC = await commandsModel.getbyId(command);
    cmdArray.push(arrayC);
}
console.log(cmdArray);

如果您的外部函数也被标记为异步,这应该有效。