为什么会有event loop
因为js是单线程的,如果某段程序需要等待一会再执行,后面的程序都会被阻塞,这样也就带来了一些问题。为了解决这个问题,js出现了同步和异步两种任务,两种任务的差异就在于执行的优先级不同。event loop就是对任务的执行顺序做了详细的规范。
同步和异步任务
异步任务:异步任务分为宏任务和微任务。
常见的微任务有:Promise.then(),.then中的逻辑是微任务;process.nextTick(node环境)。
常见的宏任务有:setTimeout、setInterval、setImmediate(node环境)、xhr(发送网络请求),callback。
同步任务:除了上面的这些情况,都属于同步任务。
任务的执行顺序
先到后:同步任务-> 微任务 -> 宏任务。
什么是event loop
事件循环(event loop)就是 任务在主线程不断进栈出栈的一个循环过程。任务会在将要执行时进入主线程,在执行完毕后会退出主线程。