TJ Holowaychuk对NodeJs的批评

Jas*_*onS 16 node.js

背景故事,请阅读:https://medium.com/code-adventures/4ba9e7f3e52b

TJ说节点失败是因为:

  1. 你可能会得到重复的回调
  2. 你可能根本没有得到回调(迷失方向)
  3. 你可能会得到带外错误
  4. 发射器可能会发生多个"错误"事件
  5. 缺少"错误"事件将一切都发送到地狱
  6. 经常不确定什么需要"错误"处理程序
  7. "错误"处理程序非常冗长
  8. 回调很糟糕

有人可以告知TJ提到的问题吗?例如,我从来没有看到回调被双重执行的问题.它会在什么条件下发生?

编辑对于那些投票结束的人: 如果你不知道TJ是谁,他将负责大部分的npm模块.所以这不是一个不知情的用户"闲置"咆哮.他的离开将极大地伤害nodejs,这个问题试图得到批评的具体细节的答案.我从来没有看到这些问题.你呢?

vku*_*kin 13

1:当你在一个函数中包装一个流时会发生:

function doSomething (callback) {
    var stream = createStream();
    stream.resume();
    stream.on('end', callback);
    stream.on('error', callback);
}
Run Code Online (Sandbox Code Playgroud)

那么,如果end发生火灾,然后error开火呢?

2:同样的事情,如果什么都没有发射(stream.resume例如删除)?这显然是函数中的一个错误,但你看到的只是挂起的东西.

4:你天真地挂钩一些异步函数error从发射器发出事件,然后当错误发生时,监听器试图破坏发射器,导致另一个error事件并最终进入无限循环.

5,6,7:每个没有error监听器的发射器都可能导致应用程序崩溃.您有两种选择:尝试了解可省略的地方或在任何地方明确添加它们.

8:值得商榷.TJ是协同程序的支持者,所以这只是他的观点.