首页 > 其他分享 >昨天学习:宏任务与微任务,JS执行机制,执行栈,事件循环,同步异步执行顺序

昨天学习:宏任务与微任务,JS执行机制,执行栈,事件循环,同步异步执行顺序

时间:2022-09-21 01:33:05浏览次数:77  
标签:异步 同步 队列 JS 任务 执行

宏任务由宿主(浏览器,Node)发起;微任务由JS本身发起。

宏任务的具体事件为scrpit(整体代码),setTimeout,setInterval,等。

微任务的具体事件为Promise,等。

JS执行机制:先处理主线程上的同步任务,异步任务放入队列,等执行栈的所有同步任务完成,则按次序读取任务列表的异步任务,进入执行栈执行

事件循环:每一次循环称为一次tick,首先主线程和队列都为空,宏任务(整体代码)进入主线程,开始区分同步任务和异步任务,同步任务首先执行,异步任务进入队列等待,当同步任务在主线程中执行完毕则出栈,异步任务进行区分分别放入为宏任务队列与微任务队列,先将微任务队列的微任务放进主线程执行,进行完再将宏任务队列的宏任务放进主线程执行,完成一次循环。

同步异步执行顺序:宏任务(整体代码)→宏任务(同步任务)→微任务队列(Promise等)→宏任务队列(异步任务)

标签:异步,同步,队列,JS,任务,执行
From: https://www.cnblogs.com/jockz/p/16714249.html

相关文章

  • nodejs抓取接口数据(axios)
     demo:varaxios=require("axios");varfs=require("fs");varnodeschedule=require("node-schedule");varhotListUrl="https://weibo.com/ajax/side/hotS......
  • Node.js 面试题 All In One
    Node.js面试题AllInOneNode.js应用领域BFFCLI前端基建工具库爬虫BFFPattern:BackendsForFrontends用于前端的后端模式https://samnewman.io/patterns/......
  • 执行上下文/作用域/闭包
    首先执行上下文的概念,执行上下文是评估和执行Js代码运行环境的抽象概念,任何Js代码在执行时,都是在对应的上下文中执行。执行上下文有三种类型,全局上下文,函数上下文以及Eval......
  • 小数转百分数 js 实现
    搞了个小数转百分数的方法,写法笨了点,但精度高  小数点%/***@description小数转百分数*@param{Number}要转换的数字100.020.0213之类*@returns......
  • C#异步编程
    受众.Net c#开发人员概念免责声明:计算机科学很多概念都没有类似数学一样严谨的定义,以下概念为个人理解程序(Program)静态模板进程(Process)程序的实例,一个程序可以有多......
  • vue.js下载依赖包node_modules
    https://blog.csdn.net/qq_36509946/article/details/118878026node_modules  npm加载的项目依赖模块 在很多时候,我们要拷贝或上传一份vue的代码时,通常会删掉......
  • nojejs 弹出子窗口,取值后返回
    1、主窗口:<!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>Inserttitlehere</title><scriptsrc="javascripts/jquery-3.2.1.min.js"></script></head......
  • dotnet 使用 Newtonsoft.Json 输出枚举首字符小写
    本文告诉大家如何使用Newtonsoft.Json输出枚举首字符小写实现方法是加上JsonConverterAttribute特性,传入StringEnumConverter转换器,再加上参数设置首字符小写如下......
  • JS 构造函数
    什么是构造函数在JavaScript中,用new关键字来调用的函数,称为构造函数,构造函数首字母一般大写  使用构造函数的场景varp1={name:'Tom',age:'18',sex:'男'};var......
  • Java中字符串、数组、集合及JSONArray的长度属性
    前言:数组没有length()这个方法,有length的属性。String有有length()这个方法。1.String字符串Stringstr="abcdefg";str.length(); 2.Array数组int[]arr=newint......