ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

async/await、promise 遍历

2019-05-23 10:44:24  阅读:201  来源: 互联网

标签:resolve console log await run promise async


for 遍历语句


async function run() {
  for (let i = 0; i < 2; i++) {
    for (let j = 0; j < 2; j++) {
      await new Promise(resolve => {
        setTimeout(async () => {
          await new Promise(resolve => {
            setTimeout(() => {
              console.log(1)
              resolve()
            }, 3000)
          })
          console.log(2)
          resolve()
        }, 2000)
      })
    }
  }
  console.log(3)
}
run()
console.log(0)

// 输出顺序
// 0
// 1
// 2
// 1
// 2
// 1
// 2
// 1
// 2
// 3

需要注意的是,async 的影响范围只在其作用函数方法内,所以先输出 ‘0’;再则根据 await 一层一层地往里面执行,resolve 不能改名,且必须要在执行完各项操作后返回,否则会中断其后所有操作!

forEach 方法遍历


async function run() {
  let arr = []
  let target = [1, 2]
  target.forEach(i => {
    arr.push(
      new Promise(resolve => {
        setTimeout(() => {
          console.log(1)
          resolve()
        })
      })
    )
  })
  await Promise.all(arr).then(val => {
    console.log(2)
  })
  console.log(3)
}
run()
console.log(0)

// result
// 0
// 1
// 1
// 2
// 3

标签:resolve,console,log,await,run,promise,async
来源: https://www.cnblogs.com/fiy-noob/p/10910484.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有