javascript语言有一个很大的特点就是单线程,也就是在同一个时间只能处理一个任务。为了协调时间,用户交互,网络处理等行为。防止线程不被阻塞,Event Loop 的方案应用而生。
javascript引擎处理任务是在执行任务,等待任务,休眠等新任务中不断循环,这种机制被称为时间循环。
javascript中的任务分类
同步任务
程序一运行就会执行的任务,无需等待
异步任务
异步任务:不会立即执行的任务(异步任务又分为宏任务与微任务),网络请求,DOM时间,定时器等都是异步任务。微任务的优先级比宏任务的优先级高。
setTimeout(() => {
console.log("异步宏任务");
},1000)
Promise.resolve()
.then(function() {
console.log("异步微任务");
})
console.log("同步任务")
输出:同步任务
异步微任务
异步宏任务
为了更好理解直接上图