javascript执行机制

dreamerv3复现教程 由于dreamerv3存在很多版本冲突问题,所以很难直接使用和复现。 阅读详情

不想看文字,看视频推荐B站路径

基本执行机制

基本上是从第一行到最后一行按照顺序依次执行,由于执行速度问题,任务划分为同步和异步两种任务,但是异步任务中有部分任务存在连贯性,又划分为宏任务和微任务。

宏任务与微任务的理解

同步和异步的区别:同步是不需要等待的任务,异步是需要等待的任务
宏任务和微任务的区别:宏任务是不需要连贯的任务,微任务是需要连贯的任务

  • 同步任务
  • 异步任务(宏任务和微任务)
    • 宏任务(macrotask):异步Ajax请求,setTimeout 、setInterval
    • 微任务(microtask):Promise.then、Promise.catch和Promise.finally,process.nextTick

代码的执行顺序:先执行主线程执行栈中的代码(同步任务),那异步任务怎样执行的?

  • 先执行同步代码,遇到异步宏任务则将异步宏任务放入宏任务队列中,遇到异步微任务则将异步微任务放入微任务队列中,当所有同步代码执行完毕后,再将异步微任务从队列中调入主线程执行,微任务执行完毕后再将异步宏任务从队列中调入主线程执行,一直循环直至所有任务执行完毕(事件循环EventLoop)
    Alt

相关试题

试题1

setTimeout(function() {
    console.log('1');
})
new Promise(function(resolve) {
    console.log('2');
}).then(function() {
    console.log('3');
})
console.log('4');
//打印顺序 2 4 3 1

执行顺序1

  1. 遇到setTimeout,异步宏任务将其放到宏任务列表中 命名为time1
  2. new Promise 在实例化过程中所执行的代码都是同步执行的(function中的代码),输出2
  3. 将Promise中注册的回调函数放到微任务队列中,命名为then1
  4. 执行同步任务cosole…log(‘4’) ,输出4,至此执行栈中的代码执行完毕
  5. 从微任务队列取出任务then1到主线程中,输出3,至此微任务队列为空
  6. 从宏任务队列中取出任务time1到主线程中,输出1,至此宏任务队列为空

试题2

console.log(1)
setTimeout(function(){
  console.log(2);
  let promise = new Promise(function(resolve, reject) {
      console.log(7);
      resolve()
  }).then(function(){
    console.log(8)
  });
},1000);
setTimeout(function(){
  console.log(10);
  let promise = new Promise(function(resolve, reject) {
      console.log(11);
      resolve()
  }).then(function(){
    console.log(12)
  });
},0);
let promise = new Promise(function(resolve, reject) {
    console.log(3);
    resolve()
}).then(function(){
  console.log(4)
}).then(function(){
  console.log(9)
});
console.log(5)
//打印顺序 1 3 5 4 9 10 11 12 2 7 8

执行顺序2

  1. 执行同步任务console.log(1) ,输出1
  2. 遇到setTimeout放到宏任务队列中,命名time1
  3. 遇到setTimeout放到宏任务队列中,命名time2
  4. new Promise 在实例化过程中所执行的代码都是同步执行的(function中的代码),输出3
  5. 将Promise中注册的回调函数放到微任务队列中,命名为then1
  6. 将Promise中注册的回调函数放到微任务队列中,命名为then2
  7. 执行同步任务console.log(5),输出5
  8. 从微任务队列取出任务then1到主线程中,输出4
  9. 从微任务队列取出任务then2到主线程中,输出9,至此微任务队列为空
  10. 从宏任务队列中取出time2(注意这里不是time1的原因是time2的执行时间为0)
  11. 执行同步任务console.log(10),输出10
  12. new Promise 在实例化过程中所执行的代码都是同步执行的(function中的代码),输出11
  13. 将Promise中注册的回调函数放到微任务队列中,命名为then3,至此宏任务time2执行完成
  14. 从微任务队列取出任务then3到主线程中,输出12,至此微任务队列为空
  15. 从宏任务队列中取出time1,至此宏任务队列为空
  16. 执行同步任务console.log(2),输出2
  17. new Promise 在实例化过程中所执行的代码都是同步执行的(function中的代码),输出7
  18. 将Promise中注册的回调函数放到微任务队列中,命名为then4,至此宏任务time1执行完成
  19. 从微任务队列取出任务then3到主线程中,输出8,至此微任务队列为空

练手题3

console.log('1');

setTimeout(function() {
    console.log('2');
    process.nextTick(function() {
        console.log('3');
    })
    new Promise(function(resolve) {
        console.log('4');
        resolve();
    }).then(function() {
        console.log('5')
    })
})
process.nextTick(function() {
    console.log('6');
})
new Promise(function(resolve) {
    console.log('7');
    resolve();
}).then(function() {
    console.log('8')
})

setTimeout(function() {
    console.log('9');
    process.nextTick(function() {
        console.log('10');
    })
    new Promise(function(resolve) {
        console.log('11');
        resolve();
    }).then(function() {
        console.log('12')
    })
})
// 1 7 6 8 2 4 3 5 9 11 10 12

YOLOv改进 | YOLOv11添加WTConv小波卷积,能够更有效地捕捉局部和全局特征 在计算机视觉目标检测领域,YOLO(You Only Look Once)系列算法凭借“单阶段检测”的高效性(一次前向传播同时完成目标定位与分类),已成为工业界与学术界的主流选择。从YOLOv1到YOLOv11,算法持续迭代优化,在速度与精度之间寻求平衡,广泛应用于自动驾驶、智能安防、工业质检等场景。为解决上述问题,本文提出一种基于,将输入特征图分解为不同频率的子带(低频全局信息与高频局部细节),并分别通过卷积操作提取局部与全局特征,最后融合多尺度特征,从而更有效地捕捉目标的局部细节与全局结构。 阅读详情

相关推荐

【一】PCIe基础知识

Linux PCIe基础知识

他山之石 可以攻玉 4万+

JavaScript:从JS的执行机制到location对象

JavaScript语言的一大特点就是单线程,也就是同一时间只能做一件事。因为JavaScript是为了处理页面中的用户交互,以及制作DOM二诞生的。比如我们对某个DOM元素进行添加和删除操作,这个不能同时进行,应该先添加,后删除。这样也会有问题:如果JS执行时间过长,会造成页面渲染不连贯,导致页面渲染加载阻塞的感觉为了解决这个问题,利用多喝CPU的计算能力,HTML5提粗Web Worker标准,允许JavaScript脚本创建多个线程,于是就有了同步和异步。

2401_88226934的博客 1250

滤波算法-呼吸心跳信号检测方法(四)

呼吸心跳信号检测系列文章:信号滤波处理

yjh_2019的博客 6269

【JavaScript】JS执行机制以及三种对象讲解

JS执行机制以及三种对象location、navigator、history方法的讲解

ztK63LrD的博客 834

DeepSeek Harness桌面版安装教程:从零配置到实用插件推荐

在AI编程工具逐步普及的今天,开发者越来越关注如何将大模型能力无缝融入日常编码流程。这类工具的核心在于构建一个连接模型服务与本地开发环境的中间层,通过项目级上下文理解、终端指令执行和插件机制,让AI真正成为能动手干活的编程副驾驶。安装配置过程中,环境准备、模型服务连接与工具权限设置是三个关键环节。完成基础搭建后,选择合适的插件能显著提升代码质量与问题排查效率,例如基于代码审查的规范对齐和安全扫描,以及面向运行时日志关联分析与性能告警的诊断工具。本文以DeepSeek Harness桌面版为例,从环境自查、安

weixin_31286719的博客 310

单细胞测序避坑指南:为什么你的免疫组库数据总出问题?5‘转录组7个关键细节

本文深度解析了5'端单细胞测序技术在免疫组库研究中的应用与常见问题。文章从5'端建库的分子机制入手,重点剖析了其在捕获TCR/BCR序列上的独特优势,并系统梳理了从样本处理、文库构建到数据质控全流程中7个最易出错的细节,为研究者提供了一份实用的避坑指南,旨在帮助提升免疫组库数据的质量和可靠性。

weixin_29208327的博客 482

【JS】这一次,彻底弄懂 JavaScript 执行机制

前言:这篇文章真的写的太好了,必须得分享分享~~~ 原文网址:这一次,彻底弄懂 JavaScript 执行机制 导图一: 导图要表达的内容用文字来表述的话: 同步和异步任务分别进入不同的执行"场所",同步的进入主线程,异步的进入Event Table并注册函数。 当指定的事情完成时,Event Table会将这个函数移入Event Queue。 主线程内的任务执行完毕为空,会去Ev...

Dora_5537的博客 525

miRNA测序数据生信分析——第一讲,总结概述

这里的miRNA测序指转录水平的测序。这里每一个数据库都可以在线访问,但是如果要本地使用,都需要进行数据库文件下载,整理。

weixin_44616693的博客 4953

【JavaScript】JS执行机制及事件循环详解

JavaScript 是一种单线程语言,即它在同一时间只能执行一个任务。与多线程语言不同,JavaScript 的执行环境(如浏览器或 Node.js)只有一个主线程用来处理所有任务。这个单线程模型决定了 JavaScript 无法同时处理多个任务,因此需要通过某种机制来处理耗时操作而不阻塞其他任务的执行。JavaScript 的执行机制及事件循环是其处理异步任务的核心。通过理解单线程模型、同步与异步任务、事件循环、宏任务与微任务的执行顺序,开发者可以更高效地编写异步代码,从而提升应用性能与用户体验。

lph159的博客 1244

MOOS-ivp实战:从零搭建水下机器人通信系统(Ubuntu 22.04版)

本文详细介绍了在Ubuntu 22.04系统上从零开始搭建MOOS-ivp水下机器人通信系统的完整实战流程。内容涵盖环境准备、核心安装、MOOSDB通信模型解析、自定义应用节点开发、以及调试监控工具链的使用,旨在帮助开发者快速掌握这一分布式机器人系统框架,构建稳定可靠的水下机器人通信与控制系统。

snow3的博客 635

osgearth添加经纬度网格,并显示鼠标所指经纬高度信息

一、代码 osgearth官方例子 #include <osg/Notify> #include <osgGA/StateSetManipulator> #include <osgViewer/Viewer> #include <osgViewer/ViewerEventHandlers> #include <osgEarth/MapNode> #include <osgEarthUtil/EarthManipulator> #

ljjjjjjjjjjj的博客 3564

js 异步执行_探秘javascript执行机制

前言之前的文章已经带着大家探究了不少关于vue,react,node等框架的知识,但是说归到底这些所谓的vue,react的框架也是基于javascript的,所以想要成为一个有理想的前端工程师必须也得对javascript理解得够透彻,现在就带大家一起来探究javascript的执行机制,解开它神秘的面纱!执行 & 运行首先我们需要声明下,JavaScript 的执行和运行是两...

weixin_40004051的博客 183

【面试系列】数据分析师高频面试题及详细解答

本文为数据分析师岗位提供了详尽的面试题库和解答,涵盖初级、中级和高级三个层次。初级面试题涉及基本的数据处理和统计分析知识,如SQL查询、数据清理和基础统计概念。中级面试题则重点考察数据可视化、复杂查询和数据建模等技能。高级面试题则深入探讨高级统计方法、大数据处理和高级分析工具的使用。通过这些问题和解答,候选人可以全面了解数据分析师岗位所需的技能,帮助其更好地准备面试。常考知识点总结部分则系统归纳了数据分析师岗位的关键技能领域。

在路上的专栏 5223

JavaScript-210:JS 执行机制

JS 执行机制

臧小川的博客 431

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【js】javaScript 执行机制

javascript 是一门单线程语言(按照语句一行一行的执行) let a = '1'; console.log(a); let b = '2'; console.log(b); 这样子正常执行是没有问题,但是当碰到异步的情况,比如 setTimeout(function(){ console.log('定时器开始啦') });new Pr...

weixin_30319153的博客 345

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【JavaScript】JS执行机制及Event Loop

文章目录1. JS的单线程概念2. 任务队列2.1 同步任务&异步任务2.2 宏任务 & 微任务3. EventLoop 事件循环4. 定时器5 示例 1. JS的单线程概念 JavaScript语言特点就是单线程,其主要用途是与用户互动和DOM操作。因此它只能是单线程,否则会带来复杂的同步问题。 为了利用多核CPU的计算能力,HTML5提出Web Worker标准,允许JavaScript脚本创建多个线程,但这并不是真正意义上的多线程,其子线程由主线程完全控制,且子线程不能对DOM

ColdCoder的博客 339

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

等待异步执行完 再执行js语句_一文彻底吃透 JavaScript 的执行机制

执行 & 运行首先我们需要声明下,JavaScript的执行和运行是两个不同概念的,执行,一般依赖于环境,比如node、浏览器、Ringo等,JavaScript 在不同环境下的执行机制可能并不相同。而今天我们要讨论的Event Loop就是JavaScript的一种执行方式。所以下文我们还会梳理node的执行方式。而运行呢,是指JavaScript 的解析引...

weixin_39992417的博客 3125

javascript的执行机制

然后在这一轮宏观任务中,执行了其他相关可以直接console的语句之后,当发现微观队列中存在微观任务时,先执行微观队列中的任务,然后再反过来执行该轮的宏观队列中的宏观任务。读取到一个异步任务,首先是将异步任务放进事件表格(Event table)中,当放进事件表格中的异步任务完成某种事情或者说达成某些条件(如setTimeout事件到了,鼠标点击了,数据文件获取到了)之后,才将这些异步任务推入事件队列(Event Queue)中,这时候的异步任务才是执行栈中空闲的时候才能读取到的异步任务。

2401_87196705的博客 1451

java js总结_读JavaScript 执行机制的一点小总结

原标题:读JavaScript 执行机制的一点小总结总结:js的执行机制是:单线程运行,主线程跑任务,线程队列一个一个宏任务来运行,并且把宏任务内的微任务的全部运行完再继续下一个宏任务。首先是同步执行其次是异步执行除了广义的同步任务和异步任务,我们对任务有更精细的定义:macro-task(宏任务):包括整体代码,setTimeout,setIntervalmicro-task(微任务):Prom...

weixin_39609457的博客 142

简述JS执行机制

JS执行机制 1、讲执行机制之前,我们应该先了解什么是JS中的同步和异步 同步:上一个任务完成才能进入下一个任务 异步:两个或者多个任务可以并行执行 同步任务:都放在主线程的执行栈 异步任务:JS的异步是通过回调函数实现的 异步任务的三种类型: 普通事件,如click、resize等等 资源加载,如load、error等 定时器,包括setInterval、setTimeout等 异步任务相关的回调函数添加到任务队列中(任务队列也称为消息队列) 执行机制 1、先执行执行栈中的同步任务 2、异步任务(

TutouPYY的博客 919

【JavaScript】JS执行机制微任务和宏任务

在学习 promise(期约) 之前,我们需要了解JS的执行机制,同步异步概念。 众所众知JavaScript是一个单线程事件循环模型。

m0_68324632的博客 1224

JavaScript基础-JS 执行机制

JavaScript基础-JS 执行机制

qq_51626500的博客 556

JavaScript---BOM对象、JS执行机制、location对象

这是因为 Javascript 这门脚本语言诞生的使命所致--JavaScript 是为处理页面中用户的交互,以及操作DOM 而诞生的。前一个任务结束后再执行后一个任务,程序的执行顺序与任务的排列顺序是一致的、同步的。比如做饭的同步做法:我们要烧水煮饭,等水开了(10分钟之后),再去切菜,炒菜。比如做饭的异步做法,我们在烧水的同时,利用这10分钟,去切菜,炒菜。这样所导致的问题是:如果 JS 执行的时间过长,这样就会造成页面的渲染不连贯,导致页面渲染加载阻塞的感觉,属性获取地址中携带的参数, 符号?

sztian68的博客 639

JavaScript中BOM简介及其对象、js执行机制

目录BOM简介什么是BOMDOM和BOM的区别BOM的构成Window对象的常见事件 BOM简介 什么是BOM BOM(Browser Object Model):浏览器对象模型,它提供了独立于内容而与浏览器窗口进行交互的对象,其核心对象是window。 BOM由一系列相关的对象构成,并且每个对象都提供了很多方法和属性。 BOM缺乏标准,JavaScript语法的标准化组织是ECMA,DOM的标准化组织是W3C,BOM最初是Netscape浏览器标准的一部分。 DOM和BOM的区别 DOM: 文档对象模型

m0_52942098的博客 412

js执行机制

js执行机制 时间:2019-11-27 本文章向大家介绍js执行机制,主要包括js执行机制使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。 js是单线程的,为什么可以执行异步操作呢? 这归结与浏览器(js的宿主环境)通过某种方式使得js具备了异步的属性。 区分进程和线程: 进程:正在运行中的应用程序。每个进程都自己...

alexwang的博客 451

【JavaScript】JS执行机制--同步与异步

## 单线程 `JavaScript`语言具有单线程的特点,同一个时间只能做一件事情。这是因为`JavaScript`脚本语言是为了处理页面中用户的交互,以及操作`DOM`而诞生的。如果对某个`DOM`元素进行添加和删除,不同同时进行。应该是先添加,再删除,事件有序。 单线程的特点是所有任务都需要排队进行,前一个任务结束,才会执行后一个任务。这样会导致问题:如果JS执行时间过长,这样会导致页面渲染不连贯,导致页面渲染加载阻塞。

叶子与海的博客 5942
上一篇: vue自适应(配置postcss-px2rem)
下一篇: js实现数组去重的几种方法
凌儿~
博客等级 码龄6年 42粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值