Javascript 解析Promise.all,将Promise作为数组或对象的一部分

Javascript 解析Promise.all,将Promise作为数组或对象的一部分,javascript,promise,Javascript,Promise,我正在尝试将一组异步调用排队以并行启动。但是,我正在排队的承诺有额外的数据,我希望这些数据与承诺值保持一致 我的问题是:如何传递包含承诺的对象或数组,并将承诺解析为对象中的值 例如,让我们生成一个普通的承诺数组: 异步函数异步函数(输入){ 返回输入*10; } 异步函数main(){ var承诺=[]; for(设i=0;i

我正在尝试将一组异步调用排队以并行启动。但是,我正在排队的承诺有额外的数据,我希望这些数据与承诺值保持一致

我的问题是:如何传递包含承诺的对象或数组,并将承诺解析为对象中的值

例如,让我们生成一个普通的承诺数组: 异步函数异步函数(输入){ 返回输入*10; } 异步函数main(){ var承诺=[]; for(设i=0;i<10;i++){ promises.push(异步函数(i)); } var结果=等待承诺。全部(承诺); document.getElementById('output').innerText=JSON.stringify(结果); } main()
您可以将承诺推送到您想要的格式:

异步函数异步函数(输入){ 返回输入*10; } 异步函数main(){ 让承诺=[]; for(设i=0;i<10;i++){ 承诺,推动( 异步函数(i)。然后(值=>({ id:我, 价值 })) ); } 让结果=等待承诺。全部(承诺); 控制台日志(结果); }
main()您可以映射承诺数组,并等待包含承诺的值键解析

    async function asyncFunction(input) {
      return input * 10;
    }

    async function main() {
      var promises = [];
      for (let i = 0; i < 10; i++) {
        promises.push({
          id: i,
          value: asyncFunction(i)
        });
      }

      var result = await Promise.all(promises.map(async (promise) => ({
        id: promise.id,
        value: await promise.value
      })));

      document.getElementById('output').innerText = JSON.stringify(result);
    }

    main();
异步函数异步函数(输入){ 返回输入*10; } 异步函数main(){ var承诺=[]; for(设i=0;i<10;i++){ 承诺,推动({ id:我, 值:异步函数(i) }); } var结果=等待承诺.all(承诺.map)(异步(承诺)=>({ 我保证, 价值:等待承诺 }))); document.getElementById('output').innerText=JSON.stringify(结果); } main();
谢谢回想起来这是有道理的,但我相信我误解了一些东西,让我觉得我的代码也可以工作。是不是我在传递一个不是直接承诺清单的东西给
承诺。所有的
?@ShawnTabrizi:是的<代码>承诺。所有
都将任何看起来不像承诺的内容视为立即解决,并且
{id:,value:}
看起来不像承诺。