我什么时候应该在 Node.js 中使用 'open' 事件?
When should I use 'open' event in Node.js?
我正在学习 Node.js,在接触事件和流主题时我遇到了这个例子:
const http = require('http');
const fs = require('fs');
http
.createServer((req, res) => {
const fileStream = fs.createReadStream('./some-data.txt', 'utf8');
fileStream.on('open', () => {
fileStream.pipe(res);
});
fileStream.on('error', (err) => {
res.end(err);
});
})
.listen(5000);
虽然我理解这段代码背后的逻辑(服务器在流的帮助下以块的形式传输一些大数据),但我不明白使用 'open' 事件的好处。
相同的代码,我只是在创建 fileStream
之后立即将数据从读取流传输到写入一个(res
对象),而不收听 'open',产生完全相同的结果。有什么区别,在什么情况下我应该听'open'?
const http = require('http');
const fs = require('fs');
http
.createServer((req, res) => {
const fileStream = fs.createReadStream('./some-data.txt', 'utf8');
fileStream.pipe(res);
fileStream.on('error', (err) => {
res.end(err);
});
})
.listen(5000);
在这种特殊情况下,是否使用 open
事件并没有什么区别。如果该文件不存在,无论如何都会发出 error
事件,您将通过 res.end(err.message)
发送它(不是 res.end(err)
失败,因为 err
是一个对象)。
open
事件告诉我们流是 open
以便我们可以在代码中处理它。
我正在学习 Node.js,在接触事件和流主题时我遇到了这个例子:
const http = require('http');
const fs = require('fs');
http
.createServer((req, res) => {
const fileStream = fs.createReadStream('./some-data.txt', 'utf8');
fileStream.on('open', () => {
fileStream.pipe(res);
});
fileStream.on('error', (err) => {
res.end(err);
});
})
.listen(5000);
虽然我理解这段代码背后的逻辑(服务器在流的帮助下以块的形式传输一些大数据),但我不明白使用 'open' 事件的好处。
相同的代码,我只是在创建 fileStream
之后立即将数据从读取流传输到写入一个(res
对象),而不收听 'open',产生完全相同的结果。有什么区别,在什么情况下我应该听'open'?
const http = require('http');
const fs = require('fs');
http
.createServer((req, res) => {
const fileStream = fs.createReadStream('./some-data.txt', 'utf8');
fileStream.pipe(res);
fileStream.on('error', (err) => {
res.end(err);
});
})
.listen(5000);
在这种特殊情况下,是否使用 open
事件并没有什么区别。如果该文件不存在,无论如何都会发出 error
事件,您将通过 res.end(err.message)
发送它(不是 res.end(err)
失败,因为 err
是一个对象)。
open
事件告诉我们流是 open
以便我们可以在代码中处理它。