如何等待对象被异步编辑?

How to wait for an object to be asynchronously edited?

我有一个 itemsarray,我想在其中附加一个异步值 getProductMinQuantity

问题是渲染 res.status(200)... 是在 item.order_quantity_minimum 编辑之前发送的。

我认为像下面这样的地图会创建一个更新项目的新承诺。

newResult 是一种类型 Promise<any>[] | undefined,我无法执行 .then .catch 然后在其中执行我的 res.status

const getCart = async () => {
  
  ...

  let newResult = result.data?.line_items.physical_items.map(async (item: any) =>
    item.order_quantity_minimum = await getProductMinQuantity(item.product_id)
  )

  res.status(200).json({
    data: result.data ? normalizeCart(result.data) : null,
  })
}

知道我该如何安排吗?

经典题;您不能在同步数组方法(map、forEach、filter 等)中使用 await。相反,使用 for...of 循环。

let newResult = []

for(let item of result.data?.line_items.physical_items) {
  item.order_quantity_minimum = await getProductMinQuantity(item.product_id)
  newResult.push(item);
}

// Do something with newResult