[英]Sequential for loop - Await Promise all
我只是试图让代码的最后一行仅在所有 updateInkLevel 函数完成执行后运行。
let accessToken
for (let i = 0; i < activeDevices.length; i++) {
if (i % 100 === 0) {
accessToken = await wppServices.getAccessToken()
}
updateInkLevel(accessToken, deviceId, logIndex) // if no await here, all parts will run in parallel
await new Promise((r) => setTimeout(r, 500)) // add a small sleep delay
}
logger.info(`${head}] END. COMPLETED ${activeDevices.length} printers.`)
updateInkLevel 是一个异步函数,返回一个承诺。 我正在考虑使用 Promise.all,但这会并行运行每个迭代,这不是我想要的。 在这里,我一次一次地按顺序触发每个迭代,睡眠延迟间隔很小。
await new Promise((r) => setTimeout(r, 500)) // add a small sleep delay
不要那样做。
您在猜测updateInkLevel
需要多长时间
只需await
updateInkLevel
返回的承诺。
这将暂停循环,直到承诺解决。
我正在考虑使用 Promise.all,但这会并行运行每个迭代,这不是我想要的。
您确定不希望它们并行吗? 这通常会更有效率。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.