gpt4 book ai didi

javascript - 如何使用 async/await 同步而不是异步触发 forEach() ?

转载 作者:行者123 更新时间:2023-11-28 13:09:41 26 4
gpt4 key购买 nike

我有以下代码:

console.log("TEST 1");
accounts.forEach(async function(account) {
console.log("TEST 2");
try {
var data = await getReservations(account);
} catch(err) {
res.status(err.error_code).json(err);
}
console.log("TEST 3");
});
console.log("TEST 4");

运行时,控制台显示:

TEST 1
TEST 2
TEST 4
getReservations()
TEST 3

但我希望它等待 getReservations() 完成,然后再继续经过 forEach()。我希望它输出:

TEST 1
TEST 2
getReservations()
TEST 3
TEST 4

有什么想法吗?

最佳答案

这是常规 for 循环效果更好的一次 - 下面的代码包装在 IIFE 中,因此可以使用 await

var accounts = [1, 3];
var getReservations = (account) => new Promise(resolve => setTimeout(resolve, 1000, account*2));
(async function() {
console.log("TEST 1");
for(var i = 0, l = accounts.length; i < l; i++) {
let account = accounts[i];
console.log("TEST 2");
try {
var data = await getReservations(account);
} catch(err) {
console.error(err);
}
console.log("TEST 3");
};
console.log("TEST 4", data); // data should be 6
})();

NOTE: anything AFTER the IIFE will not "await"

关于javascript - 如何使用 async/await 同步而不是异步触发 forEach() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43533862/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com