js循环处理asyncawait
需求
因为最近的项⽬上有⼀个显⽰历史记录的需求,然后因为其中的创建⼈等都需要通过接⼝去获取具体的数据,这就造成了我需要循环遍历历史记录并同时处理其中的字段显⽰问题。
思路
我在⽹上看到的⼀些对于循环处理async await的⽅法是这样的
let list =[1,2,3,4,5,6]
function fun(item){
//这⾥其实是调⽤接⼝,所以时间完全⽆法把握
return item
}
async function go1(){
list.forEach(async item=>{
// console.log(item)
let item1 =await(fun(item))
console.log(item1)
})
}
go1()
这⾥可以看到我们这个语句是按顺序执⾏了,但是,其实这⾥只有循环内部是同步了,外部就异步了,这⾥我们可以再加⼀句话看看
let list =[1,2,3,4,5,6]
function fun(item){
//这⾥其实是调⽤接⼝,所以时间完全⽆法把握
return item
}
async function go1(){
list.forEach(async item=>{
// console.log(item)
let item1 =await(fun(item))
console.log(item1)
})
//加上这句话
console.log('done')
}
go1()
这⾥就发现后⾯的代码先执⾏了,其实这个对于整个执⾏⽅法来讲还是异步了,那么回到需求上来我们要整个执⾏过程是同步的应该怎么做呢
let list =[1,2,3,4,5,6]
await和async使用方法function fun(item){
//这⾥其实是调⽤接⼝,所以时间完全⽆法把握
return item
}
async function go2(){
for(let item of list){
let item1 =await(fun(item))
console.log(item1)
}
console.log('done')
}
go2()
⽤回原来的⽼循环,其实也算是⼀个⼩坑吧,还是经验太少了
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论