issues
search
LLwanran
/
front_end_studying
前端知识要点
https://llwanran.github.io/front_end_studying/
2
stars
1
forks
source link
聊聊Event Loop(深圳平安科技17年夏电面我的题)
#4
Open
LLwanran
opened
5 years ago
LLwanran
commented
5 years ago
Event Loop(事件循环)是指浏览器或Node的一种解决js单线程运行时不会阻塞的机制,也就是我们经常使用异步的原理
Javascript 有一个 main thread 主线程和 call-stack 调用栈(执行栈),所有的任务都会被放到调用栈等待主线程执行
JS 调用栈
是一种后进先出的数据结构
同步任务、异步任务
JavaScript 单线程中的任务分为同步任务和异步任务,每次调用栈的同步任务执行完毕,就会去任务队列中取出完成的异步任务
【在js中,任务分两种】
宏任务(MacroTask),包括:script(整体代码)、setTimeout、setInterval、setImmediate(暂时仅IE10支持)、I/O、UI Rendering、postMessage、MessageChannel(Web Worker)
微任务(MicroTask),包括:Process.nextTick(Node)、Promise、Object.observe(废弃)、MutationObserver 微任务和宏任务皆为异步任务,它们都属于一个队列,主要区别在于他们的执行顺序
任务队列Task Queue
是一种先进先出的数据结构
Event Loop(事件循环)是指浏览器或Node的一种解决js单线程运行时不会阻塞的机制,也就是我们经常使用异步的原理
Javascript 有一个 main thread 主线程和 call-stack 调用栈(执行栈),所有的任务都会被放到调用栈等待主线程执行
JS 调用栈
是一种后进先出的数据结构
同步任务、异步任务
JavaScript 单线程中的任务分为同步任务和异步任务,每次调用栈的同步任务执行完毕,就会去任务队列中取出完成的异步任务
【在js中,任务分两种】
任务队列Task Queue
是一种先进先出的数据结构