首页 > 技术分享 > JS/TS
收藏

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

05/09 09:53
大潇博客 原创文章,转载请标明出处

同步任务和异步任务

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

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

同步任务:

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

异步任务:

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

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


什么是宏任务和微任务

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

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

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


任务执行顺序:

1、先执行同步任务

2、再执行所有微任务

3、最后执行宏任务

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


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

经典面试题1:


经典面试题2:


打赏

上一篇:js中的Promise

下一篇:js的async和await

阅读排行

大家都在搜

博客维护不易,感谢你的肯定
扫码打赏,建议金额1-10元
  • 15601023311