“NodeJS”实现自定义流程的方法
前言
有四种常见的自定义流,如可读流、可写流、双工流和转换流。常见的自定义流有HTTP请求、响应、加密、进程标准输入通信等。
流模块简介
想要在NodeJS中实现自定义流,需要依赖模块流,无需下载就可以直接导入。各种流都是通过继承本模块提供的相应类来实现的。
实现可读的自定义流
1.创建一个自定义可读流的MyRead类
要实现自定义的可读流,需要创建一个名为MyRead的类,继承stream中的可读类,并重写_read方法,这是所有自定义流的固定例程。
让{可读}=require(' stream ');//创建类myread类扩展了自定义可读流的可读{ constructor(){ super();this . index=0;}//重写_read方法_ read(){ this . index;this . push(this . index ' ');if(this . index===3){ this . push(null);}}}我们自己编写的_read方法会先搜索执行。读取时,数据会被push方法读出,直到push的值为空才会停止。否则会认为读取没有完成,会连续调用_read。
2.验证自定义可读流
让my read=new my read();myRead.on('data ',data={ console . log(data);});Myread.on ('end ',function(){ console . log(' read complete ');});//buffer 31//buffer 32//buffer 33//读取并实现用户定义的可写可写流
1.创建一个定义可写流的类MyWrite
创建一个类名MyWrite,继承流中的可写类,并重写_write方法。
让{可写}=require(' stream ');//create class mywriteextends可写的自定义可写流{//write _ write method _ write(chunk,encoding,callback)){ callback();//将缓存写入文件}}写入内容时,默认第一次直接写入文件,后续所有写入都会写入缓存。如果不调用回调,默认情况下只能第一次写入文件,调用回调将清空缓存并写入文件。
2.验证用户定义的可写流
让myWrite=new myWrite();myWrite.write('hello ',' utf8 ',)={ console . log(' hello ok ');});myWrite.write('world ',' utf8 ',)={ console . log(' world ok ');});//hello ok//world ok实现了自定义双工流双工
1.创建自定义双工流的“我的双工”类
双工流可以理解为可以读写的流。创建一个名为“我的双工”的类,并继承流中的双工类。因为双工流可以读写,所以您需要重写_read和_write方法。
让{双工}=要求('流');//创建自定义双工流的类myduplex extends duplex {//override _ read method _ read(){ this . push(' 123 ')自定义双工流;this . push(null);}//重写自定义双工流的_write方法_ write(区块、编码、回调)){ callback();}}双工流分别具有可读和可写功能,但读写互不影响,互不关联。
2.验证自定义双工流
让myDuplex=new myDuplex();my双工. on('可读',()={ console . log(my双工. read(1),'-');});setTimeout(()={my双工. on('data ',data={ console.log(data,' xxxx ');});}, 3000);//buffer 31-//buffer 32 xx//buffer 32-//buffer 33 XXX。如果在默认情况下可读和数据都被读取,那么应该只选择一个,而不要同时使用。可读流的特点是读取的数据被消耗后丢失(缓冲区被清空)。如果必须两者都用,可以加一个。
实现自定义转换流转换
1.创建一个可以转换流的自定义类MyTransform
转换流意味着它可以被视为可读流和可写流,创建一个名为MyTransform的类,继承流中的Transform类,并重写_transform方法,该方法的参数与_write相同。
让{ Transform }=require(' stream ');//创建类my transform扩展自定义转换流的转换{//重写_transform方法_ transform (chunk,编码,回调)){ console . log(chunk . tostring . touppercase());回调();this . push(' 123 ');}}在自定义转换流的_transform方法中,读取数据的push方法和写入数据的回调都可以使用。
2.验证自定义转换流程
//demo . jslet myTransForm=new myTransForm();//使用标准输入process.stdin.pipe (mytransform)。管道(process . stdin);打开命令行窗口执行node demo.js,然后输入abc,将在命令窗口输出ABC和123。事实上,转换流首先作为可写流写入标准输入,而stdin的功能是读取流,即读取用户的输入。读取后,转换流将管道作为可读流调用,用户输入的信息通过标准输出写入命令行窗口。此时,stdout的功能是编写流程。
摘要
以上是边肖介绍的NodeJS的定制流程。希望对大家有帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!
版权声明:“NodeJS”实现自定义流程的方法是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。