iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Node.js数据流Stream之Duplex流和Transform流用法
  • 649
分享到

Node.js数据流Stream之Duplex流和Transform流用法

2024-04-02 19:04:59 649人浏览 薄情痞子
摘要

Duplex流一个很好的例子是tcp套接字连接.需要实现_read(size)和_Write(data,encoding,callback)方法. var stream = requ

Duplex流一个很好的例子是tcp套接字连接.需要实现_read(size)和_Write(data,encoding,callback)方法.

var stream = require('stream');
var util = require('util');
util.inherits(Duplexer, stream.Duplex);
function Duplexer(opt) {
  stream.Duplex.call(this, opt);
  this.data = [];
}
Duplexer.prototype._read = function readItem(size) {
  var chunk = this.data.shift();
  if (chunk == "stop"){
    this.push(null);
  } else{
    if(chunk){
      this.push(chunk);
    }
  }
};
Duplexer.prototype._write = function(data, encoding, callback) {
  this.data.push(data);
  callback();
};
var d = new Duplexer({allowHalfOpen:true});
d.on('data', function(chunk){
  console.log('read: ', chunk.toString());
});
d.on('readable',function(){
  console.log("readable");
})
d.on('end', function(){
  console.log('Message Complete');
});
d.write("I think, ");
d.write("therefore ");
d.write("I am.");
d.write("Rene Descartes");
d.write("stop");

输出结果:

"C:\Program Files (x86)\JetBrains\WEBStORM 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe stream_duplex.js
read:  I think, 
read:  therefore 
read:  I am.
read:  Rene Descartes
readable
readable
readable
Message Complete

Process finished with exit code 0

Transform变换流扩展了Duplex流,不需要实现而是直接提供。但要实现_transform(chunk,encoding,callback)._flush()这个方法不知道用来做什么的目前

var stream = require("stream");
var util = require("util");
util.inherits(JSONObjectStream, stream.Transform);
function JSONObjectStream (opt) {
  stream.Transform.call(this, opt);
};
JSONObjectStream.prototype._transform = function (data, encoding, callback) {
  object = data ? JSON.parse(data.toString()) : "";
  this.emit("object", object);
  object.handled = true;
  this.push(JSON.stringify(object));
  callback();
};
var tc = new JSONObjectStream();
tc.on("object", function(object){
  console.log("Name: %s", object.name);
  console.log("Color: %s", object.color);
});
tc.on("data", function(data){
  console.log("Data: %s", data.toString());
});
tc.write('{"name":"Carolinus", "color": "Green"}');
tc.write('{"name":"Solarius", "color": "Blue"}');
tc.write('{"name":"Lo Tae Zhao", "color": "Gold"}');
tc.write('{"name":"Ommadon", "color": "Red"}');

输出结果:

"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe stream_transform.js
Name: Carolinus
Color: Green
Data: {"name":"Carolinus","color":"Green","handled":true}
Name: Solarius
Color: Blue
Data: {"name":"Solarius","color":"Blue","handled":true}
Name: Lo Tae Zhao
Color: Gold
Data: {"name":"Lo Tae Zhao","color":"Gold","handled":true}
Name: Ommadon
Color: Red
Data: {"name":"Ommadon","color":"Red","handled":true}

Process finished with exit code 0

到此这篇关于node.js数据流Stream之Duplex流和Transform流的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: Node.js数据流Stream之Duplex流和Transform流用法

本文链接: https://www.lsjlt.com/news/153597.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Node.js数据流Stream之Duplex流和Transform流用法
    Duplex流一个很好的例子是TCP套接字连接.需要实现_read(size)和_Write(data,encoding,callback)方法. var stream = requ...
    99+
    2024-04-02
  • Node.js的Duplex流和Transform流怎么使用
    这篇文章主要介绍“Node.js的Duplex流和Transform流怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Node.js的Duplex流和Transform流怎么使用”文章能帮助大...
    99+
    2023-07-02
  • Node.js数据流Stream之Readable流和Writable流用法
    一、前传 Stream在很多语言都会有,当然Node.js也不例外。数据流是可读、可写、或即可读又可写的内存结构。Node.js中主要包括Readable、Writable、Dupl...
    99+
    2024-04-02
  • 【Stream流】java中Stream流详细使用方法
    在Java中,Stream是一种用于处理集合数据的流式操作API。它提供了一种简洁、灵活、高效的方式来对集合进行各种操作,如过滤、映射、排序等。下面是一些Stream的常用功能和详细的代码示例: 创...
    99+
    2023-09-29
    java spring boot 后端 开发语言
  • Stream流 - 获取Stream和转换操作(含基本数据类型流)
    Stream概述 Stream流是jdk1.8对集合对象功能的增强,可以通过将集合转换为流模型,通过声明的方式对集合中的每个元素进行一系列并行或者串行的流水线操作。 Stream只要给出对其包含的元素执行什么操作,Stream就会隐式地在内...
    99+
    2023-08-19
    java 前端 html
  • 详解java8中的Stream数据流
    Stream是java8引入的一个重度使用lambda表达式的API。Stream使用一种类似用SQL语句从数据库查询数据的直观方式来提供一种对Java集合运算和表达的高阶抽象。直观意味着开发者在写代码时只需关注他们想要的结果是什么而无需关...
    99+
    2023-05-31
    java8 stream 数据流
  • Node.js 流:流式传输数据的终极指南
    ...
    99+
    2024-04-02
  • Node.js Stream 的艺术:掌握流式数据处理的精髓
    核心概念 Stream: 一个抽象概念,表示连续的数据流。它可以读写数据,并且可以连接到其他流来形成流管道。 Readable Stream: 只读流,用于生成数据。 Writable Stream: 只写流,用于接收数据。 Duple...
    99+
    2024-04-02
  • Stream流排序数组和List 详解
    目录一、对象单字段排序二、多字段排序三、数组排序以及List<Integer>排序一、对象单字段排序 List<People> peopleL...
    99+
    2024-04-02
  • Stream流的常用方法大全
    目录 前言 1. forEach遍历 2. filter过滤 3. distinct去重 4. limit截取 5. skip跳过 6.排序sorted 7.最值max,min 8. 统计reduce 9. List结构转换Map结构 10...
    99+
    2023-09-21
    java 开发语言 spring boot
  • Node的stream数据流你了解吗
    目录一、Node的数据流(stream)1、处理缓存的方式2、四种类型的流3、zlib模块:用于文件的压缩与解压缩(1)压缩方法:zlib.createGzip()(2)解压缩方法:...
    99+
    2024-04-02
  • Java8 Stream 流常用方法合集
    目录一、概述二、分类三、具体用法1. 流的常用创建方法2. 流的中间操作3. 流的终止操作一、概述 Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行...
    99+
    2024-04-02
  • Java基础之Stream流原理与用法详解
    目录一、接口设计二、创建操作三、中间操作四、最终操作五、Collect收集Stream简化元素计算 一、接口设计 从Java1.8开始提出了Stream流的概念,侧重对于源数据计算能...
    99+
    2022-11-13
    Java Stream流 原理 Java Stream流 用法 Java Stream流
  • 用 Node.js Socket.IO 掌控实时数据流
    Node.js Socket.IO 是一个强大的库,用于在 Node.js 和客户端(例如 Web 浏览器)之间启用双向实时通信。它使用 WebSockets 或轮询作为底层传输协议,允许您创建即时消息传递应用程序、仪表板和其他需要实时数...
    99+
    2024-04-02
  • 流光溢彩的 Node.js:流式传输数据的创新应用
    ...
    99+
    2024-04-02
  • Java 数据流之Broadcast State
    一、BroadcastState 的介绍 广播状态(Broadcast State)是 Operator State 的一种特殊类型。如果我们需要将配置 、规则等低吞吐事件流广播到下...
    99+
    2024-04-02
  • 如何使用 PHP Stream 实现数据流操作
    标题:PHP Stream 数据流操作指南 在Web开发中,数据流操作是非常常见的操作,可以用于读取文件内容、发送HTTP请求、处理网络数据等功能。PHP提供了强大的Stream功能,...
    99+
    2024-04-02
  • Java8 Stream流的常用方法汇总
    目录1、快速创建List(1)、new一个list,一个一个添加(2)、Stream流:创建动态list,可以添加元素(3)、如果创建一个固定长度的list,可以使用Arrays.a...
    99+
    2024-04-02
  • Java8 Stream流常用方法是什么
    这篇文章主要介绍了Java8 Stream流常用方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java8 Stream流常用方法是什么文章都会有所收获,下面我们一起来看看吧。一、概...
    99+
    2023-06-30
  • 怎么在Java中使用Stream流求和
    今天就跟大家聊聊有关怎么在Java中使用Stream流求和,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。BigDecimal:BigDecimal bb =lis...
    99+
    2023-06-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作