第一种:匿名函数自调用
// 第一种:匿名自调用函数,构建闭包
for(var i = 0;i < 4;i++){
(function(i){
setTimeout(()=>{
console.log(i)
},1000*i)
})(i)
}
第二种:let形成块级作用域
// 第二种:let
for(let i = 0;i < 4;i++){
setTimeout(()=>{
console.log(i)
},1000*i)
}
第三种:generator函数
// 第三种:for of加generator
const arr = [0,1,2,3]
!(async function fn(){
for(let item of arr){
var res = await fn1(item)
console.log(res)
}
})()
function fn1(item){
return new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve(item)
},1000)
})
}