这个只针对用var声明的变量,可以用es6新增关键字 let 去声明变量就不会存在这个问题

如果在for循环中使用promise的then方法去打印for循环的i变量会得到如下结果

请输入图片描述

可以发现控制台打印了5次i变量的值都为5,而不是0 1 2 3 4,这是因为i是全局变量,每次i++都会覆盖前一次结果,如果希望控制台能输出0 1 2 3 4这样的期望结果呢,这里就要用到async/await

请输入图片描述

async的作用就是指明loop为异步函数,await会等待promise.then()这个异步函数执行完才会继续执行for循环