我想使用Promise.all()来执行一组承诺。我的方法是将这些承诺放入一个数组中,然后将该数组传递给Promise.all()。
然而,我发现这些承诺在声明时就开始执行,甚至不等待Promise.all()的调用。
为什么会出现这种情况,如何才能使承诺在调用Promise.all()时才开始执行呢?
let promiseArray = [];
const values = [1, 2, 3, 4, 5];
values.forEach((value)=>{
promiseArray.push(
new Promise((resolve, reject)=>{
console.log('value: ' + value);
return resolve();
})
)
})
console.log('start')
Promise.all(promiseArray)
/*
output is
value: 1
value: 2
value: 3
value: 4
value: 5
start
would have expected output to have been
start
value: 1
value: 2
value: 3
value: 4
value: 5
*/
promiseArray.push(() =>
然后Promise.all(promiseArray.map(fn => fn()))
- Jaromanda X