我是新来的诺言。我查找了按顺序执行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>
答案 0 :(得分:1)
尝试使用异步函数并在for ... of循环中遍历Promise: