zoukankan      html  css  js  c++  java
  • JavaScript 事件循环机制(Event Loop)

    javascript从诞生之日起就是一门  单线程的  非阻塞的  脚本语言,单线程意味着,javascript代码在执行的任何时候,都只有一个主线程来处理所有的任务,非阻塞靠的就是 event loop(事件循环),本文就讲解下事件循环。

    event loop它最主要是分三部分:主线程、宏队列(macrotask)、微队列(microtask)

    js的任务队列分为同步任务和异步任务,所有的同步任务都是在主线程里执行的,异步任务可能会在macrotask或者microtask里面

    主线程

    就是访问到的script标签里面包含的内容,或者是直接访问某一个js文件的时候,里面的可以在当前作用域直接执行的所有内容(执行的方法,new出来的对象等

    宏队列(macrotask)

    • script(整体代码)
    • setTimeout
    • setInterval
    • setImmediate
    • I/O
    • UI render

    微队列(microtask)

    • process.nextTick
    • Promise
    • Async/Await(实际就是promise)
    • MutationObserver(html5新特性)

    执行顺序

    1、先执行主线程

    2、遇到宏队列(macrotask)放到宏队列(macrotask)

    3、遇到微队列(microtask)放到微队列(microtask)

    4、主线程执行完毕

    5、执行微队列(microtask),微队列(microtask)执行完毕

    6、执行一次宏队列(macrotask)中的一个任务,执行完毕

    7、执行微队列(microtask),执行完毕

    8、依次循环。。。

  • 相关阅读:
    Excel对象
    使用C#和Excel进行报表开发(6)
    使用C#和Excel进行报表开发(1)
    c# excel一个小例子
    HDU1226 BFS
    HDU2145 SPFA
    HDU1229
    HDU1535 spfa
    HDU1230
    HDU3986 SPFA
  • 原文地址:https://www.cnblogs.com/wpshan/p/13746991.html
Copyright © 2011-2022 走看看