宏任务由宿主(浏览器,Node)发起;微任务由JS本身发起。
宏任务的具体事件为scrpit(整体代码),setTimeout,setInterval,等。
微任务的具体事件为Promise,等。
JS执行机制:先处理主线程上的同步任务,异步任务放入队列,等执行栈的所有同步任务完成,则按次序读取任务列表的异步任务,进入执行栈执行
事件循环:每一次循环称为一次tick,首先主线程和队列都为空,宏任务(整体代码)进入主线程,开始区分同步任务和异步任务,同步任务首先执行,异步任务进入队列等待,当同步任务在主线程中执行完毕则出栈,异步任务进行区分分别放入为宏任务队列与微任务队列,先将微任务队列的微任务放进主线程执行,进行完再将宏任务队列的宏任务放进主线程执行,完成一次循环。
同步异步执行顺序:宏任务(整体代码)→宏任务(同步任务)→微任务队列(Promise等)→宏任务队列(异步任务)
标签:异步,同步,队列,JS,任务,执行 From: https://www.cnblogs.com/jockz/p/16714249.html