
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:
微信小程序
