首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

NodeJS模块研究 - process

unhandledRejection 事件 如果一个 Promise 异常没有被.catch()捕获,那么就会触发 process unhandledRejection 事件: process.on...一旦探测到可能导致应用性能问题,缺陷或安全隐患相关代码实践,Node.js 就可发出告警。 比如前一段代码中,如果出现未被捕获 promise 异常,那么就会触发 warning 事件。...当 Node.js 清空其事件循环并且没有其他工作要安排时,触发 beforeExit 事件。...此时,任务队列完成所有任务后,又触发 beforeExit 事件。因此,不处理的话,可能出现死循环情况。如果是显式调用 exit(),那么不会触发此事件。...深入理解 process.nextTick 一次看到 process.nextTick 时候是比较懵,看文档可以知道,它用途是:把函数作为微任务,放入事件循环任务队列中。

1.5K20

深入理解Node.js进程与子进程

相关nodejs进阶视频讲解:进入学习unhandledRejection 事件如果一个 Promise 异常没有被.catch()捕获,那么就会触发 process unhandledRejection...一旦探测到可能导致应用性能问题,缺陷或安全隐患相关代码实践,Node.js 就可发出告警。比如前一段代码中,如果出现未被捕获 promise 异常,那么就会触发 warning 事件。...当 Node.js 清空其事件循环并且没有其他工作要安排时,触发 beforeExit 事件。...此时,任务队列完成所有任务后,又触发 beforeExit 事件。因此,不处理的话,可能出现死循环情况。如果是显式调用 exit(),那么不会触发此事件。...深入理解 process.nextTick一次看到 process.nextTick 时候是比较懵,看文档可以知道,它用途是:把函数作为微任务,放入事件循环任务队列中。

1.9K21
您找到你想要的搜索结果了吗?
是的
没有找到

Node.js 流编程

本身也都是一个 EventEmmiter 实例,所有流对象实际上可以触发许多事件,比如:Readable 流在读取完毕时会触发 end 事件;Writable 流在写入完毕后会触发 finish 事件;...非流动模式下面代码实现了一款简单程序,把标准输入端(这也是一种 Readable 流)内容读取进来,并将读到东西显到标准输出端。...process.stdin.on('readable', () => { let chunk: Buffer | null; console.log('New data available'...\_read() 可能继续从资源中读取并推送数据,直到 readable.push() 返回 false。...当缓冲区清空时,流对象触发 drain 事件,以提示现在又可以向里面写入数据了。这套机制就叫做 backpressure(防拥堵机制)。backpressure 只是一套建议机制,而不是强制实施

14510

stdin and stdout which its ?

Node.js Stdin and Stdout 对应Node.js实现相同问题,那就要简单了很多,process对象是一个Global全局对象,这意味着使用它并不需要导入,同时它还是一个EventEmitter...是一个指向标准输入流可读Readable Stream,目前新API与旧版已经有了不同: process.stdin.setEncoding('utf8'); process.stdin.on(...'readable', () => { const chunk = process.stdin.read(); if (chunk !...其实通过Node.js能非常简单处理上述,遇到那个小问题,只不过在解决这个问题过程中,我们还需要面对一下历史原因问题,那就是BE and LE,所谓字节序,也就是字节顺序,它指的是多字节数据在内存中存放顺序...,这里面的历史如果有兴趣的话,可以自行Google,两大CPU流派,只想说一下,为什么我们要关注到这个,因为在处理字节时候,特别是使用了stdout.write写入bytes时,不同字节序,很有可能意味着你程序并不能正常发送消息

96530

一文读懂NodeJs知识体系和原理浅析

由于大多数现代内核都是多线程,因此它们可以处理在后台执行多个操作。 当这些操作之一完成时,内核告诉 Node.js,以便可以将适当添加到轮询队列中以最终执行。...poll:取出新完成 I/O 事件;执行与 I/O 相关(除了关闭,计时器调度调和 setImmediate 之外,几乎所有这些) 适当时,node 将在此处阻塞。...但是,操作系统调度或其他运行可能延迟它们,即执行实际时间不确定。...第一次data事件会在下一个tick中触发,所以,可以安全地将数据输出前逻辑放在事件监听后(同一个tick中)。 当数据全部被消耗时,触发end事件。...在end方法调用后,当所有底层写操作均完成时,触发finish事件。 Duplex 创建可读可写流。 Duplex实际上就是继承了Readable和Writable一类流。

1.2K10

一文读懂NodeJs知识体系和原理浅析_2023-03-01

由于大多数现代内核都是多线程,因此它们可以处理在后台执行多个操作。 当这些操作之一完成时,内核告诉 Node.js,以便可以将适当添加到轮询队列中以最终执行。...poll:取出新完成 I/O 事件;执行与 I/O 相关(除了关闭,计时器调度调和 setImmediate 之外,几乎所有这些) 适当时,node 将在此处阻塞。...但是,操作系统调度或其他运行可能延迟它们,即执行实际时间不确定。...第一次data事件会在下一个tick中触发,所以,可以安全地将数据输出前逻辑放在事件监听后(同一个tick中)。 当数据全部被消耗时,触发end事件。...在end方法调用后,当所有底层写操作均完成时,触发finish事件。 Duplex 创建可读可写流。 Duplex实际上就是继承了Readable和Writable一类流。

1.2K00

Node.js】Stream(流)学习笔记

所有流都是 EventEmitter 实例。" 一.  为什么需要流(Stream)?   举个例子,如果要读取一个文件,一次性读取需要占用大内存,是不可取。...之前一直对pipe()方法有疑问,不清楚其用法。现在了解,当我们用pipe()为可读流指定了一个接受者(可写流)时候,数据才会真正被从底层系统读出,传递给可写流。 B....下面介绍Readable流有以下几种事件      1. 'Readable'事件      2. 'data'事件 - 数据正在传递时,触发该事件(以chunk数据块为对象)      3....'end'事件 - 数据传递完成后,触发该事件。      4. 'close'事件      5. 'error'事件 所有这些事件都可以在官方API文档中找到例子。 C....可写流重要两个方法,    1. write()方法      该方法向底层系统写入数据,并在数据被处理完毕后调用所给

1.1K60

Node.js开发多进程应用

; process.stdin.on('end', function(data) { process.exit() }); 如果子进程开启失败将会触发error事件,可以在这个error事件函数中指定处理方式...方法运行是一个命令进程,也就意味着不仅运行node命令了。...,第一个参数为运行node模块,第二个可选参数为一个运行参数列表,最后为一个配置选项对象,其中slient表示是否和父进程共享一个标准输入输出,false默认为父、子进程共享,此外还有一个env对象用来配置环境变量...使用fork方法开启子进程可以使用send()方法父子进程之间互发信息,接收到信息后会触发message事件,因此可以实现父子进程通信,如下就是一个简单例子: const fork = require...timeout属性,这个属性用于指定子进程超时时间,单位是毫秒,当子进程运行时间超过该时间时,将强制关闭该子进程,默认值为0,即不限定时间,callback则为终止子进程触发函数。

1.5K20

这里有一份Node.js入门指南和实践,请注意查收

大多数 Node.js 核心 API 都采用惯用事件驱动架构,其中某些类型对象(触发器)周期性地触发命名事件来调用函数对象(监听器),那么 Node.js 是如何实现事件驱动呢?...只调用一次事件监听器 使用 eventEmitter.once() 可以注册最多可调用一次监听器。当事件被触发时,监听器会被注销,然后再调用。...只输出一次 5. 事件触发顺序 在注册事件前,触发该事件,不会被触发 !!..., nextTick 方法会将 callback 中函数延迟到事件循环一次循环中,与 setTimeout(fn, 0)相比 nextTick 方法效率高很多,该方法能在任何 I/O 之前调用我们函数...'request'事件函数中,返回一个 http.IncomingMessage 实例和一个 http.ServerResponse。

3.5K30

Node.js做后端开发,stream有必要了解下

什么是stream 定义 流英文stream,流(Stream)是一个抽象数据接口,Node.js中很多对象都实现了流,流是EventEmitter对象一个实例,总之它是冒数据(以 Buffer...可能看一张图更直观: ? 水桶管道流转图 注意:stream不是node.js独有的概念,而是一个操作系统最基本操作方式,只不过node.js有API支持这种操作方式。...看了两个例子想小伙伴们应该知道为什么要使用stream了吧!因为一次性读取,操作大文件,内存和网络是吃不消,因此要让数据流动起来,一点点进行操作。...node.js中监听自定义事件使用.on方法,例如process.stdin.on(‘data’,…), req.on(‘data’,…),通过这种方式,能很直观监听到stream数据传入和结束 连接水桶管道...水桶管道流转图中水管,也就是pipe函数什么时候触发呢?在什么情况下触流转发?底层机制是什么?上面的疑问(由于篇幅过长拆分为两篇)会在stream第二篇文章为大家详细讲解

1.7K11

Node.js--Stream 1. 概述2. Readable Stream(可读流)3. Writable Stream(可写流)4. 流模式(objectMode )5. 缓冲(highWa

Node.js--Stream 1. 概述   流(stream)在 Node.js 中是处理流数据抽象接口(abstract interface)。 stream 模块提供了基础 API 。...⑤ 在end方法调用后,当所有底层写操作均完成时,触发finish事件。...第三个参数,next(err)是一个函数,使用这个函数你可以告诉数据消耗者可以写更多数据。你可以有选择性传递一个错误对象error,这时会在流实体上触发一个emit事件。...通过传入可选 chunk 和 encoding 参数,可以在关闭流之前再写入一段数据。如果传入了可选 callback 函数,它将作为 'finish' 事件函数。 4. ...但是当writable将缓存清空时,触发一个drain事件,再调用readable.resume()使上游进入流动模式,继续触发data事件。

1.4K20

Node.js》核心技术教程(笔记)

Node.js采用单线程,利用事件驱动异步编程模式,实现了非阻塞I/O。 2.3 函数 函数是指函数可以被传递到另一个函数中,然后被调用形式。...在函数设计中有3个约定: 1)函数名通常为callback,在封装异步执行代码时,优先把callback作为函数最后一个参数出现; 2)把代码中出现错误作为callback函数第一个参数进行传递...2.4 异步编程“事件驱动” 在异步编程中,当异步函数执行时,不确定何时执行完毕,函数会被压入到一个事件循环(Event Loop)队列,然后往下执行其他代码,直到异步函数执行完成后,才开始处理事件循环...,调用相应函数。...这个事件循环队列是一个先进先出队列,是按照它们被加入队列顺序执行。 3.

1.7K31

Node.js 流源码解读之可读流

3.如果所消耗数据长度大于链表头节点长度,那么根据传入第二个参数进行最后一次判断,判断当前 BufferList 底层存储是 string 还是 Buffer 2.2.3.2....为什么可读流是 EventEmitter 实例?...read 方法返回是一个 promise,则调用这个 promise then 方法,将成功和失败传入,便于处理异常情况。...'事件中调用read方法读取数据) } 2.4.6. pause 将流从流动模式转变为暂停模式,停止触发 'data' 事件,将所有的数据保存到缓冲区 readable.pause Readable.prototype.pause...,缓冲区里没有数据触发 'data' 事件;否则将数据保存到缓冲区根据 needReadable 状态触发 'readable' 事件 read: 读 length=0 长度数据时,buffer 中数据已经到达

2.1K10

如何在 Node.js 中流式处理大 JSON 文件

{ "list": [], "otherList": [] } 在 Node.js 中我们可以基于以下几种方式读取数据,也是通常首先能够想到: fs.readFile():这个是一次性读取数据到内存...还有一个 require() 也可以加载 JSON 文件,但是稍微熟悉点 Node.js CommonJS 规范应该知道 require 加载之后是缓存一直占用在服务内存里。...实现了 SAX 解析器拥有事件驱动那样 API,像 Stream 方式来工作,边读取边解析,用户可以定义函数获取数据,无论 XML 内容多大,内存占用始终都会很小。 这对我们本节有什么帮助?...JSON 是有自己标准,有规定数据类型、格式。这个 JSON 解析器也是在解析到特定格式或类型后触发相应事件,我们在使用时也要注册相应函数。...第一次返回 { name: '1' } 第二次返回 { name: '2' } (async () => { const readable = fs.createReadStream('.

3.7K20

NodeJS模块研究 - stream

本机内存不够,或者超过了 nodejs 内存限制。 程序性能下降。过高内存占用可能导致频繁触发 GC,影响其他程序运行。...在这个过程中,如果可写/可读缓冲中数据总大小超过了 highWaterMark: 可写流 write()返回 false,直到缓冲可以继续写入,触发drain事件 可读流会停止从底层资源读取数据...这里直接从编码风格触发,来学习这两种模式。 编码风格一:监听 readable 事件 + read() 如果可读流监听了 readable 事件,那么处于暂停模式。...readable 事件触发条件: 有新数据 流到达尽头 由于处于暂停模式,因此在事件函数中,需要使用 read()来读取数据。...,事件中可以得到数据。

91530
领券