如何按顺序执行承诺并返回所有结果[重复]
Posted
技术标签:
【中文标题】如何按顺序执行承诺并返回所有结果[重复]【英文标题】:How to execute promises in order and return all results [duplicate] 【发布时间】:2019-10-11 07:30:01 【问题描述】:我不熟悉承诺。我已经按顺序查找了执行 Promise 的示例,但没有找到与我的应用程序类似的示例。
我的问题是我想以一定的顺序解决承诺,但也要在承诺解决时捕获所有结果。从查找示例。我已经创建了问题的简化版本。
我能够创建一个函数 doWork(),但问题是它所做的只是按顺序解析 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】:尝试使用异步函数并在 for...of 循环中迭代承诺:
Resolve promises one after another (i.e. in sequence)?
【讨论】:
以上是关于如何按顺序执行承诺并返回所有结果[重复]的主要内容,如果未能解决你的问题,请参考以下文章