node的事件循环

异步同步啥的就不多说了,直接看node中有哪些是异步
在这里插入图片描述在这里插入图片描述
其中灰色部分和操作系统有很大的关系,就不多说了,其中定时器属于timers队列,I/O操作属于poll队列,setImmediate属于check队列,其中nextTick和promise不属于事件循环,但是每一步的事件循环都会检查这两个队列是否有需要执行的任务,其中nextTick属于优先级最高的,相当于js中的微任务,Promise次之。
事件循环会先检查有无nextTick以及Promise,如果没有首先进入timers队列,然后再进入poll队列,在这个队列的时候,会有特殊操作,会去检查timers和check队列有没有需要执行的,如果没有,就会在poll队列等待,因为啥都没有,不可能事件循环一直空转吧,而且poll队列是I/O操作队列,node更想优先处理,当其他队列有任务的时候,事件循环会再次启动
然后再说说setImmediate,顾名思义就是立即放入check队列的意思,类似于setTimeout(()=>{},0),但是二者完全不同
这里上代码解释

setTimeout(() =>{
    console.log("timeout");
},0);
setImmediate(() =>{
    console.log("immediate")
});

在这里插入图片描述
出现这个结果的原因在于代码执行的时间,在node里面,定时器的最短时间也是1ms,所以上面的0ms其实就是1ms,如果这串代码执行时间超过了1ms,就会导致在执行异步的事件循环时,setTimeout的回调已经放入了timers队列,如果没有超过1ms,就没有放入timers队列,所以会出现两种情况

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/562678.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mklink 命令的使用(适用场景:C盘爆满,转移到其他盘)

一、背景 将Oracle数据库安装在D盘,由于磁盘爆满,需要将数据库转移到其他磁盘(如:J盘)。 在移动数据库之后,会出现数据库无法使用的情况,这时该如何解决?经了解,可以使用…

MariaDB InnoDB 空洞清理

1、背景 数据库占用服务器内存越来越高,除了bin-log文件之外,还发现了一些带有text或者longtext数据类型字段的表,这种表也会占用很高的服务器磁盘空间 数据库版本: 表引擎: InnoDB 数据量:清理之前1500万…

Xavier 初始化

Xavier 初始化 为什么在 W [ l ] n p . r a n d o m . r a n d n ( s h a p e ) n p . s q r t ( 1 n [ l − 1 ] ) W^{[l]}np.random.randn(shape)\times np.sqrt(\frac{1}{n^{[l-1]}}) W[l]np.random.randn(shape)np.sqrt(n[l−1]1​) 中需要乘以 n p . s q r t ( 1 n […

Linux服务器运维工具箱 监控管理建站一个脚本全搞定!

Linux服务器运维工具箱 监控管理建站一个脚本全搞定! 一款全能脚本工具箱,使用shell脚本编写。专为Linux服务器监控、测试和管理而设计。无论您是初学者还是经验丰富的用户,该工具都能为您提供便捷的解决方案。集成了独创的Docker管理功能&a…

IDEA2024配置RunDashBoard(Services)面板

IDEA2024配置RunDashBoard(Services)面板 新版本的IDEA没有RunDashBoard,取而代之的是Services面板,不需要配置workspace.xml文件; 本文教你简单的方法就能一个SpringBoot的Main运行多次,方便调试。 1、配置启动类 导航栏,Edit…

sso-oauth2单点登录功能笔记

场景:最近公司2个系统需要做单点登录,A系统作为服务器,认证方式是sso-oauth2方式,B系统作为客户端,token方式是ta-token,先来张sso-oauth2认证方式的图 前置准备工作 第一步:要确认谁是服务提…

AI+PS快捷键大全!

hello,我是小索奇, 你会用Photoshop(PS)或者(Illustrator)AI吗?相信很多人都会接触到吧,但有一部分人很少用快捷键,仅凭借鼠标点击来实现功能,殊不知快捷键能…

spring版本介绍

Spring Framework 是一个广泛使用的 Java 平台,用于构建企业级应用程序。它提供了一个全面的编程和配置模型,支持现代 Java 应用程序的最佳实践,如依赖注入、面向切面编程以及基于注解的编程模型。自从 Spring 1.0 发布以来,已经经…

llama2 与 llama3比较

Llama 3 刚刚在4月18号推出,距 Llama 2 发布正好 9 个月。它已经可以在 Meta 网站上进行聊天,可以从 Huggingface 以 safetensors 或 GGUF 格式下载。 llama 2 与 llama3 比较 1. 模型输出(model output) llama 2 输出只能是文本…

Go诊断工具

Go 提供了一些出色的诊断工具,可帮助我们深入了解应用程序的执行情况。 1. 分析工具 分析工具可观测应用程序执行的各种指标。它使我们能够解决性能问题、检测争用、定位内存泄漏等。这些指标可以通过以下几个配置文件收集: CPU--确定应用程序将时间花在了哪里Goroutine--报…

【MySQL】查询(进阶)

文章目录 前言1、新增2、聚合查询2.1聚合函数2.1.1count2.1.2sum2.1.3avg2.1.4max和min 2.2、GROUP BY子句2.3HAVING 3、联合查询/多表查询3.1内连接和外连接3.2自连接3.3子查询3.4合并查询 前言 在前面的内容中我们已经把查询的基本操作介绍的差不多了,接下来我们…

【ThinkPHP框架教程·Part-05】控制器定义和渲染输出

文章目录 一、控制器定义1、控制器目录设置2、控制器访问格式3、设置控制器后缀(选择性开启) 二、渲染输出1、return返回字符串2、返回json格式3、扩展:助手函数 halt() 本章节我们来了解一下控制器定义的方式,包括 URL 访问和渲染…

C# Solidworks二次开发:程序工具界面和选项相关API详解

大家好,今天要讲的是关于程序工具相关的API介绍。 下面是要介绍的API: (1)第一个为GetAutoPartSimplification,这个API的含义为获取简化配置的指针,下面是官方具体解释: 其输入参数的类型在上一篇文章中已经介绍过了gtError_e&a…

前端跨域问题

vue项目,开发环境下,axios造成跨域问题: Access to XMLHttpRequest at http://....:8888/login from origin http://localhost:8080 has been blocked by CORS policy: Cannot parse Access-Control-Allow-Headers response header field in…

遇到you-get下载报错问题解决

pip3 install you-get安装这里就不赘述了,如果你还不会安装,说明这篇文章不适合你,这篇文章主要解决当执行you-get的报错: 当然你可以加选项–debug具体看一下到底报什么错。 第一步 替换文件 首先,我们下载仓库最新…

独立样本t检验——python完整代码(直接运行就行)

#!/usr/bin/env python # -*- coding: utf-8 -*- # Author : 三十二画生JH # Contact : fjhstudent163.com # Software: PyCharm # Time : 2024/4/21 21:49 # Site : 网址 # File : t_test.py # Version : # ---功能描述 """ 对实验数据做独立样本&am…

【数值计算方法】 4.2 / Newton-Cotes公式

本质:具有等距节点的插值求积公式就是NC公式

记录数据截断误差

数据的4位之后 数据的小数点后4位之后有些不同,跟save函数有关 save ga_mat1.txt ga -ascii; save sins_mat.txt sins -ascii;

微服务之SpringCloud AlibabaNacos服务注册和配置中心

一、概述 1.1注册中心原理 在微服务远程调用的过程中,包括两个角色: 服务提供者:提供接口供其它微服务访问,比如item-service 服务消费者:调用其它微服务提供的接口,比如cart-service 在大型微服务项目…

每日算法4/21

LCR 073. 爱吃香蕉的狒狒 题目 狒狒喜欢吃香蕉。这里有 N 堆香蕉,第 i 堆中有 piles[i] 根香蕉。警卫已经离开了,将在 H 小时后回来。 狒狒可以决定她吃香蕉的速度 K (单位:根/小时)。每个小时,她将会选…