await在循环中的使用

129 阅读1分钟

前言:本文参考自文章:for循环使用await,for of以及for await of

几个for循环里使用await的方法让小编有点混乱,所以决定今天捋一捋,顺便把是否能用break也标一下:

其实for循环中使用await就分几种,看看哪个是生效的:

1、forEach:循环中使用await的写法(不生效):

array.forEach(async (item)=>{
    let datas = await getDatas()
})

2、for of:循环中使用await的写法(生效):

for( let item of array ){
    let datas = await getDatas()
    break
}

3、for await of:循环的使用方法(生效):

for await (let item of array){
    break
}

注意:

  1. forEach:没有break,循环不会等await执行而停留,await是无效的;
  2. for of:要使用在async异步方法里,执行期间,await之前的代码会执行,到了await会等待await执行完才继续往下执行,有break;
  3. for await of:也要用在async异步方法里,有break,但是它一般是使用在item是个异步方法的情况下,并不常见,场景如下面对应的例子,要遍历的数组元素是个异步请求,异步没回来之前整个for循环代码不执行: