如何解决对象中的嵌套承诺
How do I resolve nested promises in an object
代码:
async function main() {
const arr = [];
symbols.forEach((symbol) => {
const record = {
[symbol]: {
quote: priceQuote(token, symbol),
history: makePriceHistoryRequest(token, symbol, slow * 2),
}
}
arr.push(record);
})
return arr;
}
我调用 main 如下:
main().then(res=>{
console.log(res);
})
它returns和quote
和history
一样Promise
。我怎样才能进入嵌套的待定承诺?
谢谢!
如果 quote
和 history
是承诺,则意味着 priceQuote
和 makePriceHistoryRequest
是 return 承诺的函数,在这种情况下,您需要使迭代它们的回调异步,而不是包装器:
function main() {
return Promise.all(symbols.map(async (symbol) => {
const record = {
[symbol]: {
quote: await priceQuote(token, symbol),
history: await makePriceHistoryRequest(token, symbol, slow * 2),
}
}
return record
})
}
main().then(value => console.log(value) )
代码:
async function main() {
const arr = [];
symbols.forEach((symbol) => {
const record = {
[symbol]: {
quote: priceQuote(token, symbol),
history: makePriceHistoryRequest(token, symbol, slow * 2),
}
}
arr.push(record);
})
return arr;
}
我调用 main 如下:
main().then(res=>{
console.log(res);
})
它returns和quote
和history
一样Promise
。我怎样才能进入嵌套的待定承诺?
谢谢!
如果 quote
和 history
是承诺,则意味着 priceQuote
和 makePriceHistoryRequest
是 return 承诺的函数,在这种情况下,您需要使迭代它们的回调异步,而不是包装器:
function main() {
return Promise.all(symbols.map(async (symbol) => {
const record = {
[symbol]: {
quote: await priceQuote(token, symbol),
history: await makePriceHistoryRequest(token, symbol, slow * 2),
}
}
return record
})
}
main().then(value => console.log(value) )