映射两个 promise returns 两个数组但只想要一个

Map with two promises returns two arrays but only want one

我正在努力加快速度,让食物和饮料可以同时添加到订单中。所以我创建了一个 promise,当两者都完成时,这个 promise 就会解决。然后我将这两个都放在另一个承诺中,该承诺将在所有订单完成后解决。

orders = [
  {'name': 'john'},
  {'name': 'sam'},
]

const p = orders.map((order)=>{
    return Promise.all([
        add_food(order),
        add_drink(order),
    ])
})
return Promise.all(p)

function add_food(order){
   retrun Promise.resolve(order)
}

我得到的是一个包含重复内容的数组。

[
  [ "order_1", "order_1"],
  [ "order_2", "order_2"]
]

这实际上是有道理的。关于如何解决此问题并将其重组为 return

,我遇到了障碍
[ "order_1", "order_1"]

有什么想法吗?

你只需要在 Promise.all 到 return 的顺序后添加一个 .then(_ => order) 当食物和饮料承诺被解决时:

const p = orders.map(order => {
  return Promise.all([
    add_food(order),
    add_drink(order),
  ]).then(_ => order)
})

return Promise.all(p)