Javascript Console.log,因为HTTP请求正在promise阵列中发生

Javascript Console.log,因为HTTP请求正在promise阵列中发生,javascript,es6-promise,promise.all,Javascript,Es6 Promise,Promise.all,我向一个API发出HTTP请求,请求数组中有多少条目 我试图做的是console.log每次执行一个请求,但我无法让承诺记录它,因为它发生了,它将等待所有操作完成,然后立即记录所有操作 const data=['one','two'] //这模拟了API响应,我在这里没有控制权 常量mockAPI=(超时)=>{ 返回新承诺((解析,拒绝)=>setTimeout(()=>resolve(),timeout)) } 设计数器=0 //对于数组中的每个条目 const promises=data

我向一个API发出HTTP请求,请求数组中有多少条目

我试图做的是console.log每次执行一个请求,但我无法让承诺记录它,因为它发生了,它将等待所有操作完成,然后立即记录所有操作

const data=['one','two']
//这模拟了API响应,我在这里没有控制权
常量mockAPI=(超时)=>{
返回新承诺((解析,拒绝)=>setTimeout(()=>resolve(),timeout))
}
设计数器=0
//对于数组中的每个条目
const promises=data.map(()=>{
返回新承诺(异步(解析、拒绝)=>{
//跟踪我们的请求数量
柜台++
//记录下来
控制台日志(计数器)
//调用API
等待mockAPI(3000)
//对API中的数据执行某些操作。。。
解决()
})
})
//我收集所有承诺的结果,稍后再处理它

const result=Promise.all(promises)
尝试使用
for循环
等待
处理每个请求和console.log 使用
Promise.All
时,所有回迁/异步任务都并行运行(基于浏览器资源)

更新:添加了累积结果的方法

//这模拟了API响应,我在这里没有控制权
常量mockAPI=(超时)=>{
const rand=Math.floor(Math.random()*100);
返回新承诺((解决、拒绝)=>
setTimeout(()=>解析(rand),超时)
);
};
(异步函数(){
常量结果=[];
设计数器=0;
for(设i=0;i<3;i++){
console.log(counter++);
const res=等待mockAPI(3000);
结果:push(res);
}
控制台日志(结果);

})();谢谢,虽然它会等待每一个,但我无法收集结果,因为我使用的是
const result=Promise.all(promises)
@alvaro您可以使用map()将承诺映射到一个新数组,然后使用Promise.all()@Aalexander,谢谢。你介意在回复中说明一下吗?我试着用地图回答我的问题,但没有成功。@阿尔瓦罗,我只是更新了片段以处理结果累加。你可以试试这样的东西。(我只是在每个结果中添加了随机值)@sivako,谢谢,我会试试这个。我在真正的应用程序上所做的是处理承诺上的API请求结果,然后在阵列上进行累积,在调用完成后,我对结果使用reduce进一步处理该数据