JS运行机制
-
JS是一个单线程,所以在执行代码时会先在主线程执行同步代码(promise中then之前的也是同步代码),异步代码经过宿主环境分配到任务队列中,然后**EventLoop(事件循环)**会把异步代码做一个区分:宏任务和微任务,最后主线程任务执行完后,再在任务队列中查找微任务,微任务执行完后才会执行宏任务.
-
事件循环: 每一个执行完任务之后,都会检查任务队列 是否存在待执行的微任务;如果有,则执行完所有微任务之后,再继续执行下一个宏任务。
宏任务:
-
定时器(setTimeout,setIntvl)
-
ajax内部的回调函数
-
事件的回调函数
-
宏任务就是浏览器自带的各种异步API方法
微任务:
-
Promise中的.then的回调函数
-
process.nextTick
-
微任务就是js内部封装的异步方法