JS-异步和单线程

我们直入主题,什么是异步?同步和异步的区别是什么?我们在之后会拿例子来演示一下~

一、异步

问:什么时候需要异步?

答:事件可能会发生等待的时候(例如alert可能会发生等待)

问:有哪些场景会发生等待?

答:
定时任务:settimeout() setinverval()
网络请求:ajax、动态<img>标签
事件绑定:
ajax请求
在这里插入图片描述
动态图片
在这里插入图片描述
绑定了一个点击事件
在这里插入图片描述

二、单线程

单线程的是什么?

js是单线程语言,浏览器只分配给js一个主线程,用来执行任务(函数),但一次只能执行一个任务,这些任务形成一个任务队列排队等候执行,但前端的某些任务是非常耗时的,比如网络请求,定时器和事件监听,如果让他们和别的任务一样,都老老实实的排队等待执行的话,执行效率会非常的低。所以,浏览器为这些耗时任务开辟了另外的线程,主要包括http请求线程,浏览器定时触发器,浏览器事件触发线程,这些任务是异步的。

那么我们如何用单线程来解释上文提到了setTimeout例子呢
在这里插入图片描述

1、因为JS是一种单线程语言
2、单线程语言只能一件一件串行起来做事情,不能同时进行两件事,所以我们需要阻塞、等待
3、异步和同步最大的区别就是避免的阻塞进程问题

综上所述:

为了避免阻塞进程,我们需要异步处理

猜你喜欢

转载自blog.csdn.net/jbj6568839z/article/details/83059966