首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >TJ Holowaychuk对NodeJs的批评

TJ Holowaychuk对NodeJs的批评
EN

Stack Overflow用户
提问于 2014-07-05 16:14:28
回答 2查看 3.5K关注 0票数 16

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

TJ说节点失败是因为:

错误你可能得到重复的回调错误你可能根本得不到回调(迷失在边缘中)错误你可能得到带外错误errors

  • emitters可能得到多个“错误”events

  • missing“

  • ”事件将一切送到地狱

  • 通常不确定什么需要“error”错误处理程序非常差劲

  • <

>G218>

有没有人能告诉我TJ提到的问题?例如,我从未见过回调被双重执行的问题。在什么情况下会发生这种情况/它们?

如果你不知道TJ是谁,负责大部分的模块。因此,这不是一个不知情的用户的“空洞”咆哮。他的离开将极大地伤害nodejs,这个问题试图获得关于批评的细节的答案。我从来没有看到过这些问题。你是?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-05 17:35:34

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

代码语言:javascript
复制
function doSomething (callback) {
    var stream = createStream();
    stream.resume();
    stream.on('end', callback);
    stream.on('error', callback);
}

那么,如果end触发了,那么error也触发了呢?

2:同样的事情,如果什么都没有触发怎么办(例如删除stream.resume )?这显然是函数中的一个bug,但您看到的是所有东西都挂起了。

4:您天真地挂起一些异步函数以从发射器发出error事件,然后当错误发生时,侦听器试图销毁发射器,导致另一个error事件,并以无限循环结束。

5,6,7:没有error侦听器的发射器可能会使您的应用程序崩溃。您有两个选择:试着理解哪里是安全的,省略一个或显式地在所有地方添加它们。

8:有争议。TJ是协程的支持者,所以这只是他的观点。

票数 13
EN

Stack Overflow用户

发布于 2014-07-05 16:28:54

引用下一段,

...你可能认为一个例程已经完全结束了,直到一个库意外地多次调用回调,或者没有正确地清除处理程序,导致代码重新执行……

因此,似乎只有Node.js才是罪魁祸首,因为您必须记住只调用回调一次,并正确地清理您的处理程序--而一些未指明的第三方开发人员却未能做到这一点。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24584427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档