什么是异步?
先看一段代码
console.log(100)
setTimeout(function() {
console.log(200)
}, 1000)
console.log(300)
运行之后我们会发现,先输出了100,然后是300,1秒之后再输出了200,这就是异步。
我们看看同步,看下面代码
console.log(100)
alert(200)
console.log(300)
这里我们发现最开始输出100,然后弹出了200,再不点击确认的情况下,永远不会输出300
对比之后我们发现,同步是有阻塞的,需要等待前面的执行完才会继续执行后面代码。而异步是无阻塞。无需等待的。
何时需要异步?
所有需要等待的情况都需要异步
使用异步的场景有哪些?
—— 定时任务:setTimeout, setInterval
—— 网络请求: ajax请求,动态<img>加载
—— 事件绑定
什么是单线程?
单线程就是一次只能执行一个任务。
这一个个任务形成任务队列等待执行,这时有些任务是耗时的,比如图片加载、网络请求、时间监听,如果让他们用同步一个一个区执行的话,效率会非常低,还有可能出现卡死的情况,这个时候异步的解决方案就出现了。
这里我们要注意,异步只是解决了同步阻塞的情况,并非是解决了单线程,js就是单线程语言。
网友评论