Javascript Can Node.js“;内置的;流发出多个错误?

Javascript Can Node.js“;内置的;流发出多个错误?,javascript,node.js,Javascript,Node.js,如果我得到一个or,例如在调用or之后,我是否应该假设所有事件都可能触发多次,除非文档中另有说明 我对这些问题的答案特别感兴趣: 错误事件能否多次触发 如果发出错误事件,还可能发生哪些其他事件?(例如,数据?) 这些问题假定: 错误事件被捕获,不会抛出 没有使用第三方库 代码示例 简短回答:是的 长答案:yyyeesss 只是开玩笑。。。正如文档所述,当发出“error”事件时,流不会关闭,因此是的,因为流在收到错误后实际上是打开的,所以其他一切都可能发生。因此,在收到错误后,您仍然会收

如果我得到一个or,例如在调用or之后,我是否应该假设所有事件都可能触发多次,除非文档中另有说明

我对这些问题的答案特别感兴趣:

  • 错误
    事件能否多次触发
  • 如果发出
    错误
    事件,还可能发生哪些其他事件?(例如,
    数据
    ?)
  • 这些问题假定:

    • 错误
      事件被捕获,不会抛出
    • 没有使用第三方库
    代码示例

    简短回答:是的

    长答案: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?
    }