Node.js 与res.write相比,使用管道函数有什么优势
该框架是Express 当我从端点内发送请求并开始接收数据时,我可以分块读取数据并立即写入:Node.js 与res.write相比,使用管道函数有什么优势,node.js,http,express,streaming,Node.js,Http,Express,Streaming,该框架是Express 当我从端点内发送请求并开始接收数据时,我可以分块读取数据并立即写入: responseHandler.on('data', (chunk) => { res.write(chunk); }); 或者我可以创建一个可写流,并通过管道将响应传递给该流 responseHandler.pipe(res) 很明显,管道函数考虑到了前一个过程,它有更多的维度。它们是什么?管理事件处理程序和使用readable.pipe(writable)之间最重要的区别在于使用管道:
responseHandler.on('data', (chunk) => {
res.write(chunk);
});
或者我可以创建一个可写流,并通过管道将响应传递给该流
responseHandler.pipe(res)
很明显,管道函数考虑到了前一个过程,它有更多的维度。它们是什么?管理事件处理程序和使用readable.pipe(writable)之间最重要的区别在于使用管道: 数据流将被自动管理,以便目标可写流不会被更快的可读流淹没 这意味着可读流可能比可写流快,并且管道处理该逻辑。如果您编写的代码如下:
responseHandler.on('data',(chunk)=>{
res.write(块);
});
res.write()函数
返回:(boolean)false,如果流希望调用代码在继续写入额外数据之前等待发出“drain”事件;否则是真的
这意味着可写流可能无法处理更多数据。所以您可以像writable.write()示例中提到的那样手动管理它
在某些情况下,您没有可读流,可以使用writable.write()写入可写流。
范例
const data=[];//一些数据的数组。
data.forEach((d)=>writable.write(d));
但是,您必须再次看到writeable.write返回的内容。如果为假,则必须手动调整流量
另一种方法是将数据包装成可读的流,然后通过管道传输
顺便说一下,使用管道还有一个很大的优点。您可以根据自己的需要将它们链接起来,例如:
readableStream
.pipe(modify)//转换流
.pipe(zip)//转换流
.管道(可写流);
通过总结所有内容尽可能利用node.js提供的管理流的功能。在大多数情况下,它将帮助您避免额外的复杂性,并且与手动管理相比,它不会变得更慢。因此,我希望
res.send
和res.end
函数能够适当地处理这个问题。您能告诉我您使用的是哪种库吗?这里的“res”是什么?