映射两个 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)
我正在努力加快速度,让食物和饮料可以同时添加到订单中。所以我创建了一个 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)