如何解决对象中的嵌套承诺

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和quotehistory一样Promise。我怎样才能进入嵌套的待定承诺?

谢谢!

如果 quotehistory 是承诺,则意味着 priceQuotemakePriceHistoryRequest 是 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) )