Js 的事件循环(Event Loop)机制
1、js是单线程的,会有阻塞问题
2、浏览器解决阻塞问题的方法:如网络请求、settimeout是用异步来做的,但异步任务没有优先级。为了更灵活,增加了事件循环
3、事件有同步任务和异步任务,先执行同步任务,再执行异步任务;异步任务中有微任务和宏任务
4、同步任务执行完了先执行微任务,再执行宏任务;每执行一个宏任务再去检查微任务队列,如果微任务队列有任务,会清空微任务队列后再去执行下一个宏任务;这样依次循环,形成整个事件循环
宏任务:异步Ajax请求,setTimeout,setInterval,文件操作等
微任务:Promise.then,Promise.catch,Promise.finally,process.nextTick等
参考:
链接: link
链接: link