标签搜索

目 录CONTENT

文章目录

array.foreach中使用同步问题

胖头鱼
2022-10-01 / 0 评论 / 0 点赞 / 86 阅读 / 336 字 / 正在检测是否收录...

array.foreach中使用同步问题
今天在写课设的时候遇到了一个在foreach中使用await的问题。
首先我一开始获取的是id列表,然后我想通过foreach的方式轮流用id查询到物品信息,为了保证我能读取到信息并赋值,我第一时间想到的是await的方式,让他堵塞直到完成。
尝试了下在 forEach函数中调用 await Promise() 方法,模仿异步请求方法如下:
var a = [1,2,3];
a.forEach(item=>{
setTimeout(()=>{
console.log(‘111’);
},2000)
})
console.log(‘2222’);

结果:
在这里插入图片描述

发现并没有按照我所想的每隔2秒输出111,输出3次以后,再是222

经过查阅资料后发现,实际forEach本身是异步的,内部也是异步的

两种方法

方法一

复制代码
var arry = […];

Promise.all(arry.map(function(elem){

return new Promise(function(resolve, reject){

...

resolve(result);

})

})).then(function(data){

//在这就可以等所有的返回结果可以得到

})
复制代码
方法二

复制代码
var arry = […];

var counter = 0;

arry.forEach(function(elem){

//异步回调中

counter++;

if(counter === arr.length){

//在这执行所有执行的完后的

}

})

其实用for循环加上await也是可以的

这个的钱两个方法引用的

https://www.cnblogs.com/ttjm/p/13065240.html

0

评论区