什么是异步函数和同步函数
同步函数:当一个函数是同步执行时,那么当该函数被调用时不会立即返回,直到该函数所要做的事情全都做完了才返回。
-
异步函数:如果一个异步函数被调用时,该函数会立即返回尽管该函数规定的操作任务还没有完成。
经典代码
以下就是关于异步的代码:
let i = 0 for(i = 0; i<6; i++){ setTimeout(()=>{ console.log(i) },0) }//6个6
到这里就很奇怪了,为什么是6个6而不是0—5呢?
因为 i 是全局的。for 循环执行完毕之后 i 的值为6。有人奇怪 i 不应该是5吗。i = 5 满足条件(<6)是最后一轮循环,然后i++,i 为6。这个循环自始至终都是在改变一个 i 的值。所以会打印6个6。
要是想打出0—5呢?
可以这样:
for(let i = 0; i<6; i++){ setTimeout(()=>{ console.log(i) },0) } // 0 1 2 3 4 5
这里 let 会单独创建一个作用域 相当于有6个 i 。
除了使用let还能这样:
for (var i = 0; i < 6; i++) { setTimeout((function(i){ return function() { console.log(i); } }(i)),0) } // 0 1 2 3 4 5