为什么
names.forEach((name) => {
images.push(await loadImage(name));
})
不起作用,但
for (let i = 0; i < names.length; i++) {
images.push(await loadImage(names[i]));
}
是吗?
注意:loadImage只是返回一个Promise,给出一个已加载的Image()
名称是一个字符串列表
答案 0 :(得分:-1)
forEach
中的第一个参数是它自己的函数。要在函数中使用await
,该函数必须标记为async
。它没有新功能,因此可以在循环中使用,并且可能正在循环中运行的功能标记为async
。因此,要使forEach
工作,您需要执行以下操作:
names.forEach(async (name) => {
images.push(await loadImage(name));
})
但是,那不是最好的事情。真的,您想要收集承诺,然后等待它们全部完成:
const promises = names.map(name => loadImage(name));
const images = await Promise.all(promises);