首页 > 编程语言 >javascript 事件循环

javascript 事件循环

时间:2022-12-28 11:55:08浏览次数:41  
标签:function 执行 console log javascript 任务 循环 事件 setTimeout

JavaScript的运行顺序就是完全单线程的异步模型:同步在前,异步在后。所有的异步任务都要等待当前的同步任务执行完毕之后才能执行。

  1. JavaScript是单线程
  2. 执行内容分为普通代码(如 var a = 1),任务:宏任务(如setTimeout())和微任务(如Promise.then())
  3. 执行过程涉及栈(FILO)和队列结构(FIFO)
  4. JavaScript代码整体当作宏任务
  5. 解析代码时,普通代码先执行,遇到任务加入队列
  6. 代码执行时,按顺序:普通代码执行完成> 执行微任务队列全部微任务> 执行一个宏任务> 检查微任务是否执行完成,未完成,执行所有微任务> 执行一个宏任务> 检查微任务是否执行完成,未完成,执行所有微任务>...

举例1:

console.log('script start');

setTimeout(function() {
  console.log('setTimeout');
}, 0);

Promise.resolve().then(function() {
  console.log('promise1');
}).then(function() {
  console.log('promise2');
});

console.log('script end');

输出:
script start
script end
promise1
promise2
setTimeout

举例2:

Promise.resolve().then(function(){
  console.log('resolve1')
  setTimeout(function(){
    console.log('setTimeout1')
  },0)
})
setTimeout(function(){
  console.log('setTimeout2')
  Promise.resolve().then(function(){
    console.log('resolve2')
  })
},)

输出:
resolve1
setTimeout2
resolve2
setTimeout1

 

标签:function,执行,console,log,javascript,任务,循环,事件,setTimeout
From: https://www.cnblogs.com/bigjor/p/17009819.html

相关文章

  • 趋势为王 盘点2022年汽车行业十大颠覆性事件(下)
    能否察觉并把握趋势,决定了大变革中车企的走势。2022年,趋势的力量在汽车行业显露无遗,引发了一系列颠覆性事件。在​​《趋势为王盘点2022年汽车行业十大颠覆性事件》​​......
  • angularjs 嵌套循环 ng-repeat 超过30条不显示数据
    问题:ng-repeat嵌套使用的时候,内层循环的数组超过30条便不再显示数据。解决办法:加上“trackby$index”。例如:<trng-repeat="changeinInComeChange">......
  • JavaScript普通函数与箭头函数有怎样的区别?
     比较点普通函数箭头函数具体案例简写/箭头函数如果没有参数,同时函数体的返回值只有一句,则{}和return都可以省略。1、函数简写......
  • 第七章 用户输入和 while 循环
    第六章字典In [1]:alien_0={'color':'green','point':5}In [2]:alien_0['color']#从key得到valueOut[2]:'green'......
  • MySQL存储过程中使用循环处理数据
    存储过程中使用循环处理数据,createdefiner=root@localhostprocedureprls()begindeclaredonebooleandefault0;declare_namevarchar(20);de......
  • 理解JavaScript中的“面向对象”
    理解JavaScript中的“面向对象”一引子面向对象,是程序开发者再熟悉不过的一个概念。一说到它,你首先会想到的是什么?类?继承?方法与属性?不同技术栈的开发者或许有不同的第一反......
  • SpiderMonkey-让你的C++程序支持JavaScript脚本
    译序有些网友对为什么D2JSP能运行JavaScript脚本程序感到奇怪,因此我翻译了这篇文章,原文在​​这里​​​。这篇教程手把手教你如何利用SpiderMonkey创建一个能执行JavaScri......
  • JavaScript-C/C++ (SpiderMonkey) 引擎嵌入开发指南(中文向导)
    JavaScript-C/C++引擎概览本文档提供了一个JavaScript(JS)引擎的C语言实现的概述,他介绍了你如何在你的应用程序中嵌入脚本引擎来让它们可以使用JS。有两大理由让你在应用程......
  • Python循环任务,错误打包输出
    有时候,多个任务循环在跑,但不想中间任何一个错误,停止主线程,但又想在主线程运行结束后,采集运行过程中所有的错误信息。这种刁钻的想法,我自问自答,记录一下操作方法。......
  • JavaScript 深拷贝的循环引用问题
    如果说道实现深拷贝最简单的方法,我们第一个想到的就是JSON.stringify()方法,因为JSON.stringify()后返回的是字符串,所以我们会再使用JSON.parse()转换为对象,如下代码:let......