gpt4 book ai didi

javascript - 等待循环与 Promise.all

转载 作者:搜寻专家 更新时间:2023-10-31 23:29:18 24 4
gpt4 key购买 nike

<分区>

在 db 上有一组异步操作要做,我想知道执行“阻塞”await 循环与 Promise.all 在性能方面有什么不同>.

let insert = (id,value) => {
return new Promise(function (resolve, reject) {
connnection.query(`insert into items (id,value) VALUES (${id},"${value}")`, function (err, result) {
if (err) return reject(err)
return resolve(result);
});
});
};

Promise.all 解决方案(它需要一个 for 循环来构建 promise 数组..)

let inserts = [];
for (let i = 0; i < SIZE; i++) inserts.push(insert(i,"..string.."))
Promise.all(inserts).then(values => {
console.log("promise all ends");
});

等待循环解决方案

let inserts = [];
(async function loop() {
for (let i = 0; i < SIZE; i++) {
await insert(i, "..string..")
}
console.log("await loop ends");
})

编辑:感谢您的回答,但我会更深入地研究一下。await 并不是真正的阻塞,我们都知道,它是阻塞在自己的代码块中。 await 循环按顺序触发请求,因此如果中间 1 个请求花费的时间较长,则其他请求会等待它。这类似于 Promise.all:如果 1 个请求花费的时间更长,则在返回所有响应之前不会执行回调。

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