【发布时间】:2021-03-09 01:12:18
【问题描述】:
一开始,我是这样使用 forEach 的:
products.forEach(async (product) => {
if (
product.type === 'shows' &&
product.isSoldOut &&
product.otherData
) {
delete product.brand.brandId
product.brand.isTop = true
const res = await api.create(product.brand)
console.log(res)
}
})
但问题是它在其他调用之后被调用,而应该在它们之前调用。在这里检查了一些答案后,我切换到 for of 循环,以强制它在位于它之后的其他异步操作之前调用。但问题是它现在根本没有被调用。代码如下:
for (const product of products) {
async () => {
if (
product.type === 'shows' &&
product.isSoldOut &&
product.otherData
) {
delete product.brand.brandId
product.brand.isTop = true
const res = await api.create(product.brand)
console.log(res)
}
}
}
怎么了?它根本没有被调用,我怎样才能强制这个位于循环中的异步调用在位于它之后的调用之前被调用?
【问题讨论】:
-
async () => { ... }- 这个嵌套函数(你从不调用)在 for-of 循环中做了什么?
标签: javascript ecmascript-6 async-await