首页 > 编程语言 >【JavaScript】事件轮询

【JavaScript】事件轮询

时间:2023-11-07 20:45:35浏览次数:43  
标签:function console log 队列 轮询 JavaScript 任务 事件 setTimeout

1、先参考搞懂 JavsScript 异步 —  事件轮询

2、明确几点:
  • setTimeoutDOM EventHttpRequestsetIntervalsetImmediate(Node.js独有)的回调、I/O操作、UI渲染均会被加载到消息队列(macrotask宏任务)。
  • Promise的回调、MutationObserverprocess.nextTick(Node.js独有)会被加载到任务队列(microtask微任务)。
  • 任务队列优先级高于消息队列,也就是微任务优先级高于宏任务。
3、例子
new Promise(function (resolve, reject) {
    resolve();
    setTimeout(function () {
        console.log(1);
    }, 0);
    console.log(2);
}).then(function () {
   	console.log(3);
}).then(function () {
   	console.log(4);
});
console.log(5); // 打印结果:2 5 3 4 1,其中setTimeout被加到消息队列,then回调被加到任务队列,先执行。

setTimeout(() => {
  console.log("200");
}, 200);
setTimeout(() => {
  console.log("100");
}, 100); // 100 200,等待执行的时间越短,越在队列前面,而不管在script中的顺序

setTimeout(() => {
  console.log("2");
}, 2);
setTimeout(() => {
  console.log("1");
}, 1); // 当等待时间过短时,或者说队列里两个item的间隔时间过短时,两者谁先执行并不确定,多数情况下打印1 2,即正常执行,少数情况下会打印 2 1

标签:function,console,log,队列,轮询,JavaScript,任务,事件,setTimeout
From: https://www.cnblogs.com/lhjc/p/17815889.html

相关文章

  • ArcGIS API for JavaScript入门
    arcgis官网:https://arcgis.fenxianglu.cn/docs/load.html一、集成到应用----@arcgis/core方式1、引入ArcGISAPIforJavaScriptyarnadd@arcgis/core或者指定安装版本yarnadd@arcgis/[email protected]如果提示:'yarn'不是内部或外部命令,也不是可运行的程序或批处理文件......
  • JavaScript-Text节点
    Text节点的概念文本节点(Text)代表元素节点(Element)和属性节点(Attribute)的文本内容。如果一个节点只包含一段文本,那么它就有一个文本子节点,代表该节点的文本内容。通常我们使用父节点的firstChild、nextSibling等属性获取文本节点,或者使用Document节点的createTextNode方法创造一个文......
  • JavaScript了解
    JavaScript简介JavaScript是一门跨平台、面向对象的脚本语言,而Java语言也是跨平台的、面向对象的语言,只不过Java是编译语言,是需要编译成字节码文件才能运行的;JavaScript是脚本语言,不需要编译,由浏览器直接解析并执行。JavaScript是用来控制网页行为的,它能使网页可交互那么它可以做......
  • 21 个最佳 Javascript IDE 和代码编辑器 [CSS、HTML、JavaScript]
    这是我们挑选的21个最佳JavaScriptIDE和源代码编辑器。目录什么是IDE选择正确的开发环境时要寻找什么?免费的最佳JavascriptIDE最佳高级JavascriptIDE结论:最佳JavaScriptIDE是哪个?常见问题解答:最佳JavascriptIDE如今,Javascript在前端开发中越来越流行。您......
  • asp.net中怎样用Javascript控制RequiredFieldValidator控件什么时候启用,什么时候不启
    Enable/DisableRequiredFieldValidatorwithJavascriptdocument.getElementById("requiredfieldvalidatorid").enabled=false;<asp:DropDownListID="ddlServiceName"runat="server"onchange='varDateValidator=docume......
  • Qt事件循环及QEventLoop的使用
    目录一、介绍二、QCoreApplication主事件循环三、事件循环的开启例一例二四、父子事件传递五、processEvents六、QEventLoop类七、事件循环的嵌套及QEventLoop模拟同步调用1、同步获取数据2、主线程等待3、对话框弹出一、介绍Qt作为一个跨平台的UI框架,其事件循环实现原理......
  • 使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为
    一个报表的查询,用ajax调用的Service,查询条件没有问题,后台也能返回数据,就一直返回Error提示,F12看到是因为返回json时出错了 在web.config的configuration加以下代码即可解决<system.web.extensions><scripting><webServices><jsonSerializationmaxJs......
  • JavaScript string对象(属性,方法)获取图片后缀案例 输入和输出结果转换形式案例
    一、创建string对象varstrOb=newString("abcefg");varstrOb=String("abcefg");varstrOb="abcefg";二、属性length  (字符串长度)varstr='hello';console.log(str.length)//5三、方法1、子字符串位置indexOf(string,[index])str......
  • JavaScript--Web API
    DOMDOM(DocumentObjectModel——文档对象模型)是用来呈现以及与任意HTML或XML文档交互的API。DOM是浏览器提供的一套专门用于操作网页内容的功能作用:开发网页内容特效和实现用户交互DOM树DOM节点节点是文档树的组成部分,每一个节点都是一个DOM对象,主要分为......
  • 在Python中获取飞书群消息,你可以使用`feishu-python-sdk`这个库¹。这是一个用于和飞
    在Python中获取飞书群消息,你可以使用`feishu-python-sdk`这个库¹。这是一个用于和飞书开放平台交互的Python库,它支持同步调用和异步调用,实现了订阅事件和卡片交互回调¹。首先,你需要安装这个库,可以使用pip进行安装:```pythonpipinstallfeishu-python-sdk```然后,你可以使用以......