gpt4 book ai didi

javascript - 是否可以在其他 then for() 循环中使用 await ?

转载 作者:行者123 更新时间:2023-11-30 14:21:06 26 4
gpt4 key购买 nike

有没有办法使用async/await在非for循环(例如foreach、map)中调用异步函数,并在所有异步之后继续执行其余代码功能完成了吗?

const layers = ["layer1", "layer2", "layer3"];

async function connect(layer: string): Promise<object> {
return new Promise((resolve, reject) => {
setTimeout(function () {
resolve(layer);
}, 1000);
});
}

(async function () {
for (let i = 0; i < layers.length; i++) {
const result = await connect(layers[i]);
console.log(result, "connected");
}
console.log("All layers are connected");
})();

最佳答案

您正在寻找Promise.all() .它获取 Promise 的数组(或其他可迭代对象)并返回一个新的 Promise,当所有输入 Promise 解析时解析。输入的 Promise 是并行执行的(比 await 好得多 - 循环中的每个 Promise)。

等待这个Promise

const layers = ["layer1", "layer2", "layer3"];

async function connect(layer: string): Promise<object> {
return new Promise((resolve, reject) => {
setTimeout(function () {
resolve(layer);
}, 1000);
});
}

await Promise.all(layers.map(connect));
console.log('All layers are connected');

关于javascript - 是否可以在其他 then for() 循环中使用 await ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52734151/

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