首页 > 编程语言 >Node中的事件循环

Node中的事件循环

时间:2024-05-17 11:30:34浏览次数:22  
标签:Node node 队列 循环 事件 nextTick Poll

前段时间较为系统性的学习了node,在学习过程中发现其中的事件循环机制与浏览器中的有很大的不同,今天特意查找相关资料,整理node的事件循环机制。

  1.异步API

           

    以上三个异步操作分别对应Timer、Poll、Check队列;

  2.事件循环顺序

  • 自上而下依次执行,会在Poll队列暂停判断等待(查看Timer和Check是否有任务执行)

                

  • 注意setImmediate与setTimeout,因为在node中setTimeout精度为1ms,因此即使延时设置为0,也会有1ms延时,如果反复执行下述代码,会出现不同的结果。

    

    为保证按照指定的顺序,可以把他们放到一个I/O操作的回调中,如下图所示。此时处于Poll队列,会依次往Check队列执行,因此会先调用setImmediate;

 

   3.process.nextTick(node特有)

    在启动事件循环之前会先清空nextTick任务。事件循环中从timer到check运行一周叫一个tick,process.nextTick即是为了在一个tick之前执行的。

   4.微任务队列

    比如promise.then....,会在nexttick之后事件循环之前。

   5.综述

标签:Node,node,队列,循环,事件,nextTick,Poll
From: https://www.cnblogs.com/july-Vivian/p/18197503

相关文章

  • 彻底解决 node node-sass sass-loader版本兼容问题
    原文地址https://www.cnblogs.com/easy1996/p/17945874直接放弃node-sass,使用dart-sass无缝替换。node-sass与dart-sass区别:node-sass是用node(调用cpp编写的libsass)来编译sass。dart-sass是用dratVM来编译sass。node-sass是实时自动编译的,dart-sass需要保......
  • 日志报错监控,nodejs实现服务器日志监控,发现指定错误,发送到微信群
    nohupnodelog2.js>log_output.log2>&1&constfs=require('fs');constrequest=require('request');constschedule=require('node-schedule');constmoment=require("moment-timezone");constl......
  • NODEJS通过发送json数据查询目标服务,实现服务器状态监控,发现异常发送到微信群提醒
    root@aea87fa6e6a2:/home/node#catlogin2.jsconstrequest=require('request-promise');constmoment=require('moment');constcron=require('node-cron');process.env.TZ='Asia/Shanghai';//设置时区为上海时区constrp......
  • 循环结构
    循环结构while循环结构:while(布尔表达式){​ 循环内容}注意:只要布尔表达式为true,循环会一直循环下去我们大多数情况是会让循环停止下来的,我们需要一个让表达式失效的方式来结束循环。少部分情况需要循环一直执行,比如服务器的请求响应监听等。循环条件一直为true就会造成......
  • Java面试题:Spring中的循环依赖,给程序员带来的心理阴影
    循环依赖通常发生在两个或多个SpringBean之间,它们通过构造器、字段(使用@Autowired)或setter方法相互依赖,从而形成一个闭环。下面是一个使用字段注入(即使用@Autowired)导致的循环依赖的示例: 示例代码: 假设我们有两个类,ClassA和ClassB,它们相互依赖:publicclassClassA{......
  • OPCUA NodeSet XML 下载地址
    官网下载reference.opcfoundation.org/nodesets有各个模型的下载网址 2、GitHub GitHub-OPCFoundation/UA-Nodeset:UANodeset    完整的文件,文件名称——PLCModelbasedonIEC61131-3_1172761404.xml<?xmlversion="1.0"encoding="utf-8"?><!--......
  • 前端启动失败,踩坑/报错node-sass版本与本地环境不符
    Node自带npm,但自己可能后期升级过npm,终端使用命令自查当前node与npm版本号,按照需要对照下图修改。通常是由于前端项目sass版本与本机Node环境不符导致前端启动失败,可在前端项目的package.json中找到node-sass版本号.       node与node-sass版本匹配图,直戳官网......
  • 前端面试题 - Node与浏览器的事件循环的差异?
    前端面试题-Node与浏览器的事件循环的差异?浏览器环境下,每执行完一个宏任务就执行所有微任务队列。在Node10之前,微任务会在事件循环的各个阶段之间执行,Node的事件循环分为6个阶段,它们会按照顺序反复运行。每当进入某一个阶段的时候,都会从对应的回调队列中取出函数去执行。......
  • nodejs学习07——API
    接口一、简介1.1接口是什么接口是前后端通信的桥梁简单理解:一个接口就是服务中的一个路由规则,根据请求响应结果接口的英文单词是API(ApplicationProgramInterface),所以有时也称之为API接口这里的接口指的是『数据接口』,与编程语言(Java,Go等)中的接口语法不同1.2......
  • 在Linux中,什么是安全信息和事件管理(SIEM)?
    安全信息和事件管理(SecurityInformationandEventManagement,简称SIEM)是一种集中式的日志分析解决方案,用于实时监控、分析和报告IT基础设施中的安全事件和日志数据。SIEM系统的主要目标是提高组织的安全性,通过自动化的日志分析和事件关联,快速检测和响应潜在的安全威胁。1.SIEM......