#javascript #arrays #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"]
]
Что на самом деле имеет смысл. Однако я нахожусь в тупике относительно того, как решить эту проблему и реструктурировать ее, чтобы вернуться
[ "order_1", "order_1"]
Есть какие-нибудь идеи?
Ответ №1:
вам просто нужно добавить .then(_ => order)
«после Promise.all
«, чтобы вернуть заказ, когда обещания о еде и напитках будут выполнены :
const p = orders.map(order => {
return Promise.all([
add_food(order),
add_drink(order),
]).then(_ => order)
})
return Promise.all(p)