Js是一门单线程语言,即同一时间只能执行一段代码。
所以,对于同步任务,后一个任务只能等前一个任务执行完才能执行。
异步机制:
而异步任务,需要借助even loop 事件循环机制处理。
当存在执行到异步任务时,会先把异步任务挂起,交由浏览器其他线程来检测call back
回调任务。
当检测到有回调任务时,则把回调任务放到任务队列。
执行流程:
(Js执行引擎主线程会优先检测任务队列中是否有事件可执行,接着再处理其他异步任务)
Js线程处理完了同步任务后,会循环检测任务队列。
取出任务队列中的任务,压到同步栈里执行,执行完后,出栈。
再去取出任务队列里的任务执行。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210712164231381.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI0ODE5ODQx,size_16,color_FFFFFF,t_70)