如何按顺序执行承诺和 return 所有结果

How to execute promises in order and return all results

我是新手。我已经查找了按顺序执行承诺的示例,但我没有找到与我的应用程序类似的示例。

我的问题是我想按特定顺序解决 promise,但也希望在 promise 解决时捕获所有结果。从查找示例。我创建了一个简化版的问题。

我能够创建函数 doWork(),但问题是它所做的只是按顺序解析承诺,而没有捕获结果。

理想情况下,我想要一个 returns 一个可以解决所有结果的承诺的函数。

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Test</title>
   <script>
      function getRandomInterval(min, max){
         var random = Math.random() * (+max - +min) + +min;
         return random;
      }

      function createPromiseReturningFn(input){
         return function(){
            return new Promise(
               function(resolve, reject){
                  setTimeout(function(){
                     // console.log(input);
                     resolve(input);
                  }, getRandomInterval(0, 100));
               }
            );
         }
      }

      var promises = [];

      for (var i=0; i<10; i++){
         promises.push(createPromiseReturningFn(i));
      }

      function doWork(){
         if (!promises.length)
            return;
         var promise = promises.shift();
         promise().then(
            doWork
         );
      }

      doWork();
   </script>
</head>
<body>

</body>
</html>

尝试使用异步函数并在 for...of 循环中迭代 promise:

Resolve promises one after another (i.e. in sequence)?