先看一下最简单的异步代码
console.log(1)
setTimeout(function(){
console.log(2)
},0)
console.log(3)
这里打印顺序是 1 3 2
上面代码的定时器就是一个异步代码,代码的执行顺序:
1. 打印1
2. 开启一个定时器
3. 打印3
4. 执行定时器里面的代码:打印2
所以最终会是 1 3 2 的结果。
之所以会是这样是因为 异步代码不等待结果,直接进行下面的代码,所以定时器只是开启了,而没有立即执行里面的
代码,等到当前运行坏境的代码执行完之后再回来执行定时器里面的代码。
总结:异步就是不等待结果的代码。
JS 引擎不能同时做两件事
异步并不是同时做两件事情
以上面的代码为例。定时器里面的代码一定会在当前环境中的任务执行完了「之后」才执行。所以并不是同时在做两件事。
网友评论