美文网首页前端笔记
js 中 eventloop个人理解

js 中 eventloop个人理解

作者: 小虫along | 来源:发表于2021-12-18 22:57 被阅读0次

    由于js 是单线程,也就是说,同一个时间只能做一件事。防止主线程不被阻塞,所以就会涉及到各各流程事件的执行规则的问题,eventloop就产生了

    宏任务(macroask

    可以理解是每次执行栈执行的代码就是一个宏任务(包括每次从事件队列中获取一个事件回调并放到执行栈中执行)。
    包括
    script(整体代码)
    setTimeout
    setInterval
    I/O
    UI交互事件
    postMessage
    MessageChannel
    setImmediate(Node.js 环境)

    微任务(microtask)

    以理解是在当前 task 执行结束后立即执行的任务。也就是说,在当前task任务后,下一个task之前,在渲染之前。
    包括
    Promise.then
    Object.observe
    MutationObserver
    process.nextTick(Node.js 环境)

    运行机制

    1.执行一个宏任务
    2.执行过程中如果遇到微任务,就将它添加到微任务的任务队列中
    3.宏任务执行完毕后,立即执行当前微任务队列中的所有微任务(依次执行)
    4.当前宏任务执行完毕,开始检查渲染
    5.渲染完毕后,开始下一个宏任务(从事件队列中获取)

    v2-e6dd78c74cb671dd9408c2273308a265_1440w.jpeg

    相关文章

      网友评论

        本文标题:js 中 eventloop个人理解

        本文链接:https://www.haomeiwen.com/subject/iuknfrtx.html