码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Recall:JS EventLoop


    有时候一段代码没有达到你想要的效果,可能加上setTimeout就好了  

    之前对事件循环一知半解,今天重新深入理解一下😂

    宏任务

    JS是单线程的,但是浏览器是多线程的,当 JS 需要执行异步任务时,浏览器会另外启动一个线程去执行该任务。也就是说,“JS 是单线程的”指的是执行 JS 代码的线程只有一个,是浏览器提供的 JS 引擎线程(主线程)。浏览器中还有定时器线程和 HTTP 请求线程等,这些线程主要不是来跑 JS 代码的。

     如图所示举个栗子:setTiemout(callback,ms)

    直观上看是主线程被堵塞 100ms,然后继续执行callback。但是实际上这两者是并行的关系,it will run in parallel。回到事件环,事件环分离出一个线程处理异步任务,待完成后,又重新回到主线程,去执行回调函数。

    this is Task queue 

     and then, we gone to render the page, switch to another thread

    浏览器另外的线程会处理页面渲染的更新

     cool lets see the microTask 

    微任务可以发生在事件循环的任意一个阶段

    微任务就是一个需要异步执行的函数,执行时机是在主函数执行结束之后、当前宏任务结束之前。

    不过要搞清楚微任务系统是怎么运转起来的,就得站在 V8 引擎的层面来分析下。

    我们知道当 JavaScript 执行一段脚本的时候,V8 会为其创建一个全局执行上下文,在创建全局执行上下文的同时,V8 引擎也会在内部创建一个微任务队列。顾名思义,这个微任务队列就是用来存放微任务的,因为在当前宏任务执行的过程中,有时候会产生多个微任务,这时候就需要使用这个微任务队列来保存这些微任务了。不过这个微任务队列是给 V8 引擎内部使用的,所以你是无法通过 JavaScript 直接访问的。

    也就是说每个宏任务都关联了一个微任务队列。

    结果 : 1 4 3 2

    宏任务和微任务之间存在着 : DOM渲染

    优先级: 宏任务 > DOM渲染  > 微任务


     

  • 相关阅读:
    基于QT开发的线性代数初学者的矩阵计算器设计
    前后端分离:停车管理系统(Java后端,vue前端)
    SD、SDIO和MMC接口基础和规范介绍
    全栈开发实战 | SSM框架整合完整教程
    (五)关系数据库标准语言SQL
    【向量数据库】相似向量检索Faiss数据库的安装及余弦相似度计算(C++)
    wayland(xdg_wm_base) + egl + opengles 光照模型实例(十五)
    【LeetCode】【剑指offer】【队列的最大值(二)】
    力扣(LeetCode)10. 正则表达式匹配(C++)
    idea启动Tomcat时控制台出现乱码的解决(亲测有效)
  • 原文地址:https://blog.csdn.net/dongnihao/article/details/127764178
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号