阅读原文
概述
常见的自定义流有四种,Readable(可读流)、Writable(可写流)、Duplex(双工流)和 Transform(转换流),常见的自定义流应用有 HTTP 请求、响应,crypto
加密,进程 stdin
通信等等。
stream 模块介绍
在 NodeJS 中要想实现自定义流,需要依赖模块 stream
,直接引入,不需下载,所有种类的流都是继承这个模块内部提供的对应不同种类的类来实现的。
实现一个自定义可读流 Readable
1、创建自定义可读流的类 MyRead
实现自定义可读流需创建一个类为 MyRead
,并继承 stream
中的 Readable
类,重写 _read
方法,这是所有自定义流的固定套路。
// 创建自定义可读流
const {
Readable } = require("stream");
// 创建自定义可读流的类
class MyRead extends Readable {
constructor() {
super();
this.index = 0;
}
// 重写自定义的可读流的 _read 方法
_read() {
this.index++;
this.push(this.index + "");
if (this.index === 3) {
this.push(null);
}
}
}
我们自己写的 _read
方法会先查找并执行,在读取时使用 push
方法将数据读取出来,直到 push
的值为 null
才会停止,否则会认为没有读