美文网首页
轮询机制 事件队列

轮询机制 事件队列

作者: lessonSam | 来源:发表于2020-03-16 00:53 被阅读0次

    轮询就是通常说的 event loop 而事件队列则是event loop 的具象化

    话不多说 上题目


    image.png

    看我慢慢分析

    image.png
    1、先执行主线程
    2、遇到宏队列(macrotask)放到宏队列(macrotask)
    3、遇到微队列(microtask)放到微队列(microtask)
    4、主线程执行完毕
    5、执行微队列(microtask),微队列(microtask)执行完毕
    6、执行一次宏队列(macrotask)中的一个任务,执行完毕
    7、执行微队列(microtask),执行完毕
    8、依次循环。。。

    注意两个事件 nextTick 执行优先于 微任务 而 requestIdleCallback 只会在空余时间执行就是所有任务执行完毕之后执行 *
    是通常说的 event loop 而事件队列则是event loop 的具象化
    *

    话不多说 上题目


    image.png
    • 常见的宏任务:script(整体代码), setTimeout, setInterval, setImmediate, I/O, UI rendering。
    • 微任务: Promises, Object.observe, MutationObserver
      看我慢慢分析
      image.png
      1、先执行主线程
      2、遇到宏队列(macrotask)放到宏队列(macrotask)
      3、遇到微队列(microtask)放到微队列(microtask)
      4、主线程执行完毕
      5、执行微队列(microtask),微队列(microtask)执行完毕
      6、执行一次宏队列(macrotask)中的一个任务,执行完毕
      7、执行微队列(microtask),执行完毕
      8、依次循环。。。

    *注意两个事件 nextTick 执行优先于 微任务 而 requestIdleCallback 只会在空余时间执行就是所有任务执行完毕之后执行 *

    什么是异步?(当时被问的一懵不知道怎么回答)
    异步想相对于同步而言的 JS 的单线程执行的时候会按照至上而下的顺序执行这个叫同步,当遇见异步的时候他不会马上执行而是会放到事件队列中去,等待主任务执行完毕再执行异步

    相关文章

      网友评论

          本文标题:轮询机制 事件队列

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