• 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、依次循环。。。

  • 相关阅读:
    浏览器驱动器下载地址
    7.pytest测试完成后通过allure生成测试报告
    6.pytest参数化操作
    5.pytest中fixture的使用(params参数)
    5.pytest中fixture的使用(scope参数)
    4.pytest中固定装置setup和teardown
    3.pytest函数级测试用例和类级测试用例
    2.pytest用例设计及运行
    1.pytest环境搭建
    Pycharm 常用快捷键
  • 原文地址:https://www.cnblogs.com/wpshan/p/13746991.html
Copyright © 2020-2023  润新知