首页 > 编程语言 >JavaScript 笔记(二)事件循环机制

JavaScript 笔记(二)事件循环机制

时间:2023-07-18 23:34:34浏览次数:27  
标签:异步 队列 JavaScript 笔记 任务 循环 执行

一、事件循环机制
  1. 定义:事件循环是 JavaScript 中一种重要的异步执行机制。
  2. 作用:管理和协调各种异步任务的执行顺序,保证 JavaScript 代码的执行顺序和预期一致。
  3. 组成部分:
    3.1 主线程(调用栈):执行任务;
    3.2 任务队列:存放异步任务;
    3.3 事件循环线程:检查任务队列里面的异步任务,有的话将异步任务调入主线程执行。
  4. 任务队列:
    4.1 宏任务队列:setInterval()、setTimeout()、setImmediate()、ajax、事件绑定;
    4.2 微任务队列:new Promise() 后的 then 与 catch 函数、new MutaionObserver()、process.nextTick(Nodejs)。
  5. 总结:
    5.1 初始的同步任务可以看作是一次宏任务的执行;(实际上不是宏任务)
    5.2 宏任务执行完毕,事件循环线程自动检查【微任务队列】并将所有检查到的 微任务 调入主线程执行;(若检查无微任务,则直接去检查宏任务队列)
    5.3 所有微任务执行完毕,事件循环线程自动检查【宏任务队列】并将检查到的 宏任务 调入主线程执行;(若无宏任务,任务队列为空)
    5.4 重复 5.2,5.3 步骤,直至任务队列为空的过程称之为任务循环。

 

引用一下 @恰巧喜欢 大佬的图:

 

标签:异步,队列,JavaScript,笔记,任务,循环,执行
From: https://www.cnblogs.com/foreveronlymiss/p/17564420.html

相关文章

  • 【刷题笔记】55. Jump Game
    题目Givenanarrayofnon-negativeintegers,youareinitiallypositionedatthefirstindexofthearray.Eachelementinthearrayrepresentsyourmaximumjumplengthatthatposition.Determineifyouareabletoreachthelastindex.Example1:Input:......
  • 《Programming Abstractions In C》阅读笔记p69-p71
    今日完成《ProgrammingAbstractionsInC》阅读P69-p71。一、技术总结涉及到的技术知识点有“symbolicconstant”,”Arraydeclaration”,“Arrayselection”。#include<stdio.h>#defineNJudges5intmain(intargc,charconst*argv[]){//Arraydeclarationp69:......
  • 谓词加密(Predicate Encryption, PE)-学习笔记
    该文对谓词加密描述的较为详细,可供参考。出处:廖定锋,王常吉.谓词加密理论与应用研究[D].中山大学硕士学位论文,2010:24-25. ......
  • python部分库使用笔记
    pyecharts官网pyecharts是一个用于生成Echarts图表的类库。Echarts是百度开源的一个数据可视化JS库。用Echarts生成的图可视化效果非常棒,pyecharts是为了与Python进行对接,方便在Python中直接使用数据生成图。pip下载pyecharts:pipinstallpyechartspip查询py......
  • [刷题笔记] Luogu P1168 中位数
    ProblemDescription题目描述非常简洁,不作解释。Solution题目要求对前奇数项求中位数?朴素的做法是暴力,但是范围1e5显然T。这里主要介绍一种堆顶堆的做法。堆顶堆是什么呢?我们不妨开两个堆,一个大根堆一个小根堆。动态维护中位数,初始令前1位的中位数为\(a_i\),遍历数组,若遇到比中......
  • [刷题笔记] 异或
    Problem给定一个包含\(n\)个数的可重集,每个数为0或1,初始时答案变量\(ans=0\)。你需要进行\(n-1\)次操作,每次操作进行如下:选取可重集中的两个数\(x,y\),并计算出\(z=x\operatorname{xor}y\)。将\(ans\)增加\(z\)。在可重集中删除\(x,y\),并加入\(z\)......
  • 动手学深度学习-笔记
    课程信息课程主页Pytorch版视频教程目录03安装04数据操作+数据预处理05线性代数06矩阵计算07自动求导08线性回归+基础优化算法分集笔记06矩阵计算07自动求导08线性回归+基础优化算法%matplotlib_inline不能在pychrom里运行,在代码最后一行加上plt.s......
  • 《DeepChain: Auditable and Privacy-Preserving Deep Learning with Blockchain-base
    本文的研究背景:在各种机器学习任务中,深度学习可以实现比传统机器学习算法更高的精度。最近,保护隐私的深度学习引起了信息安全界的极大关注,其中训练数据和训练模型都不会被暴露。联合学习是一种流行的学习机制,其中多方将局部梯度上传到服务器,服务器使用收集的梯度更新模型参数。然......
  • 分块学习笔记
    分块学习笔记区间加:对于每个区间\([l,r]\),如果\(lid=rid\),那么就暴力加。否则中间块加到\(sum[i]\)和\(tag[i]\)内,其余散块暴力加到\(a[i]\)内。注意不会存在最后一个块长不为\(len\)的情况,因为\(rid-1\)总是不会在最后一个块内。区间和:对于每个区间\([l,r]\),如......
  • [Javascript] DOM alias $, $$
    const$=()=>document.querySelector.call(this,arguments);const$$=()=>document.querySelectorAll.call(this,arguments);HTMLElement.prototype.on=(a,b,c)=>this.addEventListener(a,b,c);HTMLElement.prototype.off=(a,b)=>this.......