我们直入主题,什么是异步?同步和异步的区别是什么?我们在之后会拿例子来演示一下~
一、异步
问:什么时候需要异步?
答:事件可能会发生等待的时候(例如alert可能会发生等待)
问:有哪些场景会发生等待?
答:
定时任务:settimeout() setinverval()
网络请求:ajax、动态<img>
标签
事件绑定:
ajax请求
动态图片
绑定了一个点击事件
二、单线程
单线程的是什么?
js是单线程语言
,浏览器只分配给js一个主线程,用来执行任务(函数),但一次只能执行一个任务,这些任务形成一个任务队列排队等候执行,但前端的某些任务是非常耗时的
,比如网络请求,定时器和事件监听,如果让他们和别的任务一样,都老老实实的排队等待执行的话,执行效率会非常的低。所以,浏览器为这些耗时任务开辟了另外的线程
,主要包括http请求线程,浏览器定时触发器,浏览器事件触发线程,这些任务是异步的。
那么我们如何用单线程来解释上文提到了setTimeout例子呢
1、因为JS是一种单线程语言
2、单线程语言只能一件一件串行起来做事情,不能同时进行两件事,所以我们需要阻塞、等待
3、异步和同步最大的区别就是避免的阻塞进程问题
综上所述: