JS/TS

JS的同步任务和异步任务、宏任务和微任务

05-09 09:28

同步任务和异步任务

javascript是一门单线程语言,同一时间只能做一件事。

为了防止某个耗时任务导致程序假死的问题,javascript把待执行的任务分为同步任务和异步任务两类:

同步任务:

又叫做非耗时任务,指的是在主线程上排队执行的任务,只有一个任务结束,才能执行后一个任务。

异步任务:

又叫做耗时任务,异步任务由javascript委托给宿主环境(客户端或服务端)执行。

当异步任务执行完成后,会通知javascript主线程执行异步任务的回调函数。


什么是宏任务和微任务

Javascript把异步任务做了进一步划分,异步任务又分为两类,分别是:

宏任务(macrotask):异步Ajax请求、setTimeout、setInterval、文件操作、其它宏任务;

微任务(microtask):Promise.then、Promise.catch、Promise.finally、process.nextTick、其它微任务;


任务执行顺序:

1、先执行同步任务

2、再执行所有微任务

3、最后执行宏任务

每一个宏任务执行结束之后,都会检查是否存在待执行的微任务,如果存在微任务,则执行完所有微任务后,再继续执行下一个宏任务


通过下面的经典面试题,可以更深刻理解宏任务和微任务

经典面试题1:


经典面试题2:


微信小程序
大潇博客 版权所有 Copyright ©2016~2025
京ICP备17004217号-6  合作QQ:284710375
天玺科技