> 文章列表 > 如何在for循环内执行异步操作

如何在for循环内执行异步操作

如何在for循环内执行异步操作

  1. var定义的i是全局的,每次遍历都会覆盖,最后i的值为10,所以输出10次10

     for (var i = 0; i < 10; i++) {setTimeout(function () {console.log(i) // 输出10遍10}, 1000 + i * 100)}
    
  2. setTimeOut 第三个函数

     for (var i = 0; i < 10; i++) {setTimeout(function (val) {console.log(val)}, 1000 + i * 100, i)}
    
  3. 借助闭包,存储变量i,防止被覆

     for (var i = 0; i < 10; i++) {(function (i) {setTimeout(() => {console.log(i)}, 1000 + i * 100)})(i)}
    
  4. let定义变量,由于let存在块级作用域,i只在本轮遍历有效

     for (let i = 0; i < 10; i++) {setTimeout(function () {console.log(i)}, 1000 + i * 100)}