Javascript Can Node.js“;内置的;流发出多个错误?
如果我得到一个or,例如在调用or之后,我是否应该假设所有事件都可能触发多次,除非文档中另有说明 我对这些问题的答案特别感兴趣:Javascript Can Node.js“;内置的;流发出多个错误?,javascript,node.js,Javascript,Node.js,如果我得到一个or,例如在调用or之后,我是否应该假设所有事件都可能触发多次,除非文档中另有说明 我对这些问题的答案特别感兴趣: 错误事件能否多次触发 如果发出错误事件,还可能发生哪些其他事件?(例如,数据?) 这些问题假定: 错误事件被捕获,不会抛出 没有使用第三方库 代码示例 简短回答:是的 长答案:yyyeesss 只是开玩笑。。。正如文档所述,当发出“error”事件时,流不会关闭,因此是的,因为流在收到错误后实际上是打开的,所以其他一切都可能发生。因此,在收到错误后,您仍然会收
错误
事件能否多次触发错误
事件,还可能发生哪些其他事件?(例如,数据
?)
事件被捕获,不会抛出错误
- 没有使用第三方库
简短回答:是的 长答案:yyyeesss 只是开玩笑。。。正如文档所述,
当发出“error”事件时,流不会关闭,因此是的,因为流在收到错误后实际上是打开的,所以其他一切都可能发生。因此,在收到错误后,您仍然会收到finish
或end
或它可以抛出的任何事件
通常在发生错误后调用end
事件,因为通常,错误是关于无法读取/写入更多数据之类的,但不要将此作为规则,因为您的程序需要为每种情况做好准备
如果你想让你的程序在100%的错误发生后停止读写,你必须调用.end()
,以确保结束发生。我想“我应该假设[…],除非文档另有说明吗?”通常可以用YES:-)来回答,特别是在自定义或子类流的情况下。@Bergi Yeah,我现在的代码是“他们没有说不,这意味着它可以发生”(安全总比抱歉好)。我问这个问题主要是出于好奇。呵呵,“长答案”是+1。在我的辩护中,我正在阅读4.x
(LTS)的文档,该消息似乎已经添加到6.x
(当前)中。下次我会在询问之前检查两个版本。@noisypaxy哦,这很有道理。我很好奇你没有注意到文档xD中的注释
var options = {
method: 'GET',
host: 'localhost',
path: '/',
};
require('http').get(options, function(response) {
// ...
response.on('end', callback);
response.on('error', callback);
// ...
});
function callback() {
// Can this function be called multiple times?
}
var s = require('fs').createReadStream('/path/to/file');
s.on('end', callback);
s.on('error', callback);
function callback() {
// Can this function be called multiple times?
}
var s = require('fs').createWriteStream('/path/to/file');
s.on('finish', callback);
s.on('error', callback);
function callback() {
// Can this function be called multiple times?
}