众所周知js是单线程,但js是可以执行同步和异步任务的,同步的任务众人皆知是按照顺序去执行的
而异步任务的执行,是有一个优先级的顺序的,包括了 宏任务(macrotasks)和 微任务(microtasks)
一,同步任务和异步任务
①同步任务(synchronous)
又叫做非耗时任务,指的是在主线程上排队执行的那些任务
只有前一个任务执行完毕,才能执行后一个任务
②异步任务(asynchronous)
又叫做耗时任务,异步任务由JavaScript 委托给宿主环境进行执行
当异步任务执行完成后,会通知JavaScript 主线程执行异步任务的回调函数
异步任务又包括宏任务与微任务
二,宏任务与微任务
①宏任务(macrotask)
异步Ajax 请求、
setTimeout、setInterval、
文件操作
其它宏任务
②微任务(microtask)
Promise.then、.catch 和.finally
process.nextTick
其它微任务
注意:我们在工作常用到的宏任务是 setTimeout,