js执行机制

《UDS协议从入门到精通》系列——图解0x85:控制DTC的设置 如何让ECU停止或恢复DTC状态位更新?有哪些注意点?图解+示例教你快速上手UDS 0x85服务!! 阅读详情

定义:

JavaScript是基于单线程运行的,同时又是异步执行的,一般来说这种既是单线程又是异步的语言都是基于事件来驱动的,恰好浏览器给JavaScript提供了这种环境

执行过程

同步和异步任务分别进入不同的执行"场所"",同步的进入主线程,异步的进入Event Table并注册函数

当指定的事情完成之后,Event Table会将这个函数移入Event Queue

主线程的任务执行完毕为空,回去Event Queue读取对应的函数,进入主线程执行。上述过程会不断重复,也就是常说的事件循环(Event Loop)

同步事件(先进后出heap)

  1. 代码没有执行的时候,执行栈为空栈
  2. foo函数执行时,创建一帧,这帧中包含了形参、局部变量(预编译过程),然后把这一帧压入栈中
  3. 然后执行foo中的代码,执行bar函数
  4. 创建新帧,同样有形参、局部变量,压入栈中
  5. bar函数执行完毕,弹出栈
  6. foo函数执行完毕,弹出栈
  7. 执行栈为空

异步事件(先进先出stack)

Ajax进入Event Table, 注册并回调函数success
执行console.log(‘run’)

ajax事件完成http网络请求线程把事件放到Event Queue中 主线程(调用栈)读取任务下执行success函数

浏览器常驻的线程

  1. js引擎线程(解释执行js代码、用户输入、网络请求)
  2. GUI(绘制用户界面,与js主线程是互斥的)
  3. http网络请求线程(处理用户的get、post等请求,等返回结果后将回调函数推入任务队列)
  4. 定时触发器线程(setTimeout、setInterval等待时间结束后把执行函数推入任务队列中)
  5. 浏览器事件处理线程(将click、mouse等交互事件发生后将这些事件放入事件队列中)

重新理解定时器

setTimeout的等待时间结束后并不是直接执行的而是先推入浏览器的一个任务队列,在同步队列结束后在依次调用任务队列中的任务。

setTimeout(function(){},0)js主线程的执行栈为空时,0ms实际上也达不到,根据HTML标准,最低4ms
setInterval是每隔一段时间把任务放到Event Queue之中

宏任务和微任务

宏任务 -> 微任务 -> GUI渲染 -> 宏任务 -> …

  • 宏任务(macrotask)也称为task:我们可以将每次执行栈执行的代码当做是一个宏任务(包括每次从事件队列中获取一个事件回调并放到执行栈中执行), 每一个宏任务会从头到尾执行完毕,不会执行其他

  • 微任务(microtask) :当执行到script脚本的时候,js引擎会为全局创建一个执行上下文,在该执行上下文中维护了一个微任务队列,当遇到微任务,就会把微任务回调放在微队列中,当所有的js代码执行完毕,在退出全局上下文之前引擎会去检查该队列,有回调就执行,没有就退出执行上下文,这也就是为什么微任务要早于宏任务,也是大家常说的,每个宏任务都有一个微任务队列(由于定时器是浏览器的API,所以定时器是宏任务,在js中遇到定时器会也是放入到浏览器的队列中)

关于宏任务和微任务的定义参考了这篇文章:https://juejin.im/post/5e22b391f265da3e204d8c14#heading-24

基于simulink的电气弹簧ES稳压控制模型仿真 若要补偿母线电压的谐波,需控制ES上的谐波,即在单闭环母线电压有效值控制的基础上,增加谐波抑制环节来进行谐波控制,现有的各种检测和抑制谐波的方法有采用模拟滤波器、傅里叶分析进行谐波分析、基于瞬时无功功率理论的方法等。当关键负载ZC为电流源型非线性负载时,电路原理图如图7所示,由于电流源型非线性负载可以等效为谐波电流源,关键负载电流ic便会含有谐波分量,导致输电线电流is和母线电压VS同样会含有谐波分量,导致供电质量的严重下降,对用电设备的正常工作造成影响。分别为流过线路阻抗、非关键负载、关键负载的电流, 阅读详情

相关推荐

深入解析SSD报错“READ FPDMA QUEUED”:从诊断到修复全流程

本文深入解析了SSD报错“READ FPDMA QUEUED”的含义、成因与全流程解决方案。该错误通常指示硬盘硬件或健康状态问题。文章详细介绍了如何通过系统日志定位错误、解读关键的S.M.A.R.T.健康报告(重点关注重分配扇区计数等指标),并逐步进行硬件排查(如更换SATA数据线)、软件修复与数据抢救,最终指导用户根据诊断结果做出维修或更换SSD的决策。

weixin_29233333的博客 400

js的运行机制

js运行机制,即事件循环机制。js是单线程执行的,这意味着同一时间内只能做一件事,但这并不是说单线程就会阻塞,而要实现单线程且非阻塞的方法就是事件循环机制。在js中,会把任务分为同步和异步,这两者的执行环境不同,同步任务会进入主线程,异步任务会进入事件队列(EventQueue),当主线程代码执行完毕后,会去事件队列中读取对应的异步任务,并推到主线程中执行,不断重复过程,称为事件循环机制(EventLoop)。

weixin_51433264的博客 1612

STM32F407 步进电机S形曲线加减速

步进电机

smallerlang的博客 1592

js的执行机制

js是一门单线程语言js的执行机制就是事件循环(Event Loop)

m0_64562972的博客 6841

YOLO26涨点改进 | 损失函数改进篇 | 引入SlideLoss,适配尺度变化+遮挡+难易样本不平衡,手把手配置+实战案例

COCO-Hard是COCO数据集的复杂场景子集,包含80个类别,重点筛选多尺度、遮挡密集样本,其中小尺度目标(<32×32像素)占比42%,大尺度目标(>128×128像素)占比28%,遮挡目标占比57%,场景涵盖人群密集、车流拥堵、复杂工业环境,完美模拟真实复杂检测场景,适合验证SlideLoss的适配性。

qq_36130719的博客 158

NL2SQL进阶系列(3):Data-Copilot、Chat2DB、Vanna Text2SQL优化框架开源应用实践详解[Text2SQL]

NL2SQL进阶系列(3):Data-Copilot、Chat2DB、Vanna Text2SQL优化框架开源应用实践详解[Text2SQL]

丨汀、的博客 5422

浏览器常驻线程

浏览器常驻线程 在学习js过程中一定会与浏览器打交道,因此了解了浏览器常驻线程与其用途,会在很大的程度上优化程序,使程序运行更加的高效。在下面就介绍以下的浏览器常驻线程 1.js引擎线程,其作用解释执行js代码,用户输入,网络请求 2.gui线程,其作用是绘制用户界...

domino~~的博客 289

【ROS】ROS2导航Nav2:简介、安装、测试效果、错误处理

在ROS2中自动导航使用Nav2来实现。Nav2 使用几个独立的模块化服务,通过 ROS 2接口(例如动作服务器或服务)与行为树 (BT) 通信。Nav2 输入包括:TF转换、一个地图源、一个行为树 (BT) XML 文件和相关的传感器数据源;Nav2 输出速度命令;Nav2 支持多种机器人,比如:四足机器人、履带机器人、轮式机器人等。

郭老二 5088

JS运行机制

1. 单线程的JavaScript JavaScript是单线程的语言这,由它的用途决定的,作为浏览器的脚本语言,主要负责和用户交互,操作DOM。 假如JavaScript是多线程的,有两个线程同时操作一个DOM节点,一个负责删除DOM节点,一个在DOM节点上添加内容,浏览器该以哪个线程为标准呢? 所以,JavaScript的用途决定它只能是单线程的,过去是,将来也不会变。 HTML5的WebWorker允许JavaScript主线程创建多个子线程,但是这些子线程完全受主线程的控制,且不可操

楠姐的博客 1036

0.1 专栏导读:为什么需要从 MM 理解 HMM

本文探讨了GPU计算框架中CPU与GPU内存管理的困境,介绍了Linux内核的HMM(Heterogeneous Memory Management)解决方案。传统显式拷贝模型存在编程复杂、指针失效等问题,而HMM通过共享虚拟地址空间、自动页面迁移等机制实现透明内存管理。文章分析了HMM依赖的Linux内存管理基础设施,包括页表遍历、MMU通知、ZONE_DEVICE等核心组件,并梳理了从经典MM到支持异构设备的进化历程。最后给出了学习HMM的8层知识体系,强调理解底层MM机制是掌握HMM的关键。

图形/计算GPU的驱动与虚拟化技术分享园地 769

【毕设级教程】从0到1实现基于YOLOv8的xView卫星图像目标检测系统(含UI界面,助力遥感智能毕设)

本文基于YOLOv8模型设计了一个面向xView卫星图像的目标检测系统。首先对xView数据集进行了格式转换处理,将原始多边形标注转换为YOLO格式的边界框标注。随后通过配置YOLOv8模型参数完成训练,实现了对卫星图像中建筑、车辆等多类目标的准确识别。为提高系统交互性,采用PyQt开发了可视化界面,支持图像选择、实时检测和结果展示功能。整个系统兼顾学术价值和实用价值,为遥感领域的自动化目标检测提供了可行方案。

m0_64661770的博客 130

Nodejs常驻后台运行

https://blog.youkuaiyun.com/qq_21794603/article/details/68067821 1. 下载安装包 安装 wget https://nodejs.org/dist/v12.16.0/node-v12.16.0-linux-x64.tar.xz 解压 yum search xz yum install xz.i386 xz -d node-v6.10.1-l...

XSemperFI的博客 1237

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

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

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

2401_88226934的博客 1251

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

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

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

ztK63LrD的博客 835

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

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

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

Dora_5537的博客 525

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

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

weixin_40004051的博客 183

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

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

lph159的博客 1244

【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

【js】javaScript 执行机制

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

weixin_30319153的博客 345

JavaScript-210:JS 执行机制

JS 执行机制

臧小川的博客 431

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

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

weixin_39992417的博客 3125

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

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

weixin_39609457的博客 142

javascript的执行机制

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

2401_87196705的博客 1452

简述JS执行机制

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

TutouPYY的博客 920

javascript执行机制

上图内容用文字表述的话: 同步和异步任务分别进入不同的“场所”,同步的进入主线程,异步的进入Event Table并注册函数 当指定的事情完成时,Event Table会将这个函数移入Event Queue 主线程内的任务执行完毕为空,回去Event Queue读取对应的函数,进入主线程执行,上述过程会不断重复,也就是常说的Event Loop(事件循环)我们将同步任务放在浏览器的主线程之上,只有前面一个任务执行完成之后才会执行后面的任务,异步任务是指 不进入主线程,而进入任务队列的任务。

m0_58398070的博客 1150

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

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

m0_68324632的博客 1229
上一篇: dom总结
下一篇: 函数的编程思想
ccxCode
博客等级 码龄8年 1粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值