Javascript 在 Promise.all 之后执行函数

Javascript execute function after Promise.all

我在 promise 中有一组函数,在执行完所有函数后,我需要调用一个特定函数,该函数使用从每个函数获得的结果。这是代码:

async function returnValues() {
  var finalVal1;

  function returnValue1() {
    return new Promise((resolve, reject) => {
      finalVal1 = {};
      //do stuff
      return finalVal1;
    })
  }
  var finalVal2;

  function returnValue2() {
    return new Promise((resolve, reject) => {
      finalVal2 = {};
      //do stuff
      return finalVal2;
    })
  }
  var finalVal3;

  function returnValue3() {
    return new Promise((resolve, reject) => {
      finalVal3 = {};
      //do stuff
      return finalVal3;
    })
  }
  var finalVal4;

  function returnValue4() {
    return new Promise((resolve, reject) => {
      finalVal4 = {};
      //do stuff
      return finalVal4;
    })
  }

  let promise = await Promise.all([returnValue1(), returnValue2(), returnValue3(), returnValue4()]).then(myFunction(finalVal1, finalVal2, finalVal3, finalVal4));
}

function myFunction(finalVal1, finalVal2, finalVal3, finalVal4) {
  console.log(finalVal1);
  console.log(finalVal2);
  console.log(finalVal3);
  console.log(finalVal4);
}

问题是每个 returnVal() 函数都工作得很好,如果我单独调用它们,myFunction() 工作得很好,但是当我使用 Promise.all 它永远不会执行myFunction() 位。 我哪里错了? 非常感谢

像这样尝试:

  • 将“returns Promise 的函数”简化为常量。
  • 承诺做到resolve()
  • await Promise.all的结果是一个值数组,这个数组传递给myFunction
    async function returnValues() {
    
      const returnValue1 = new Promise((resolve, reject) => {
          let finalVal1 = {};
          //do stuff
          resolve(finalVal1);
        });
    
     const returnValue2 = new Promise((resolve, reject) => {
          let finalVal2 = {};
          //do stuff
          resolve(finalVal2);
        })
      }
    
      const values = await Promise.all([returnValue1, returnValue2])
      
      myFunction(values);
    }
    
    function myFunction(values) {
      console.log(values[0]);
      console.log(values[1]);
    }