当前位置: 首页 > 知识库问答 >
问题:

如何按顺序执行promise并返回所有结果[重复]

端木弘方
2023-03-14

我对promise不熟悉。我查找了按顺序执行promise的示例,但没有找到与我的应用程序类似的示例。

我的问题是,我想按照一定的顺序解决promise,但也要捕获promise解决时的所有结果。通过查找例子。我已经创建了这个问题的简化版本。

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

理想情况下,我想要一个返回promise的函数,该函数将与所有结果一起解析。

<!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>

共有1个答案

微生弘
2023-03-14

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

一个接一个地解决promise(即按顺序)?

 类似资料:
  • 我在试用GraphQL。我从postgresql中提取数据,除了一个问题,解析在查询完成之前就完成了,其他一切似乎都能正常工作。我以为我的查询承诺工作正常。这里是我为查询数据库而创建的类: 下面是我的graphql查询: 我注释了我的结果,只是想了解一下返回静态内容的情况,结果似乎在then()内时不会返回到graphisql(这意味着在then()之前完成的解析)。输出: } 我可以通过将静态返

  • 原文是这样的: 这确实令人惊讶,但最终明白了(嗯,至少我想我明白了)为什么会这样发生。 现在,我将第二个更改为: 如果我遗漏了一些明显的东西,或者我的问题是愚蠢的,让我提前说声对不起。还有谢谢你!

  • 问题内容: 我有一张桌子,里面有人和他们拥有的汽车 该查询为我提供了和拥有完全相同的汽车以及Lisa本人的人,这很好。 结果: 如果我想查找所有拥有相同汽车的人,请重新运行查询,结果应为我。 现在,我有一个Java名称列表,对于每个名称,我都运行此查询。真的很慢。无论如何,是否可以找到所有拥有相同汽车的人,并在单个数据库调用中将结果划分为组? 例如,使用第一个表。我可以运行将名称分组的查询。请注意

  • 我正在创建,比如说,15个Callable任务,并提交它们: 然后我收集15个MyResult对象: 问题是:我没有从get()方法获得所有15个MyResult对象,而是有时获得不到15个对象。有时12有时10有时甚至更少,有时全部15。 我的印象是,方法是一个阻塞调用,将等待所有15个线程返回各自的结果,但看起来我错过了其中的一些线程并继续前进。我做错了什么?我是否未正确收集结果/等待结果?当

  • 在我的示例项目中,我尝试在应用程序启动时做一些初始化工作。 Java 16 Vertx 4.1.0 检查完整的项目代码。 但它并没有像预期的那样工作。 没有像Reactor那样的方法 我找不到一种有效的方法来按顺序执行它们。 更新时间: 我按照建议更改了代码。 并在控制台中获取以下日志。 如何在输入打印结果之前确保插入块中的所有未来都已完成。

  • 我有下表,其中包含PostID和到rootPostId的映射 我有以下疑问: 返回结果: 我希望返回以下内容,以便返回的第一个postId是传递到查询中的相应postId(postId=2),如下所示。 返回所需结果: