处理node.js中回调的最佳实践

时间:2013-08-21 12:04:25

标签: javascript node.js express closures

我正在创建一个javascript类,并且我有这个函数在node.js中使用crypto模块。我不确定处理回调的最佳方法是哪种。看看这个例子并解释一下。

Users.prototype.makeSalt = function(callback){
      crypto.randomBytes(64, callback);
};

OR

Users.prototype.makeSalt = function(callback){
      crypto.randomBytes(64, function(err, buf){
           if (err) callback(err);
           callback(null, buf);
      });
};

其中哪一项是首选方法还是最佳做法?在第一个中,我将回调直接发送到模块中定义的函数,并让它处理回调。在第二个中,我通过接收函数的回调来自己处理回调。 我认为第一个是首选,除非我需要任何自定义。 但我对node.js和javascript的技能非常新手所以想知道这两种方法之间的其他区别是什么哪个会更受欢迎?

2 个答案:

答案 0 :(得分:3)

我认为这无关紧要。 如果您需要稍微更改回调实施,您可以通过内联代理2进行代理。如果没有,请按照选项1直接传递。

一流功能的优点在于它们提供了这种灵活性。 这意味着没有尽可能多的既定最佳实践规则,而是根据与现有情况相关的优点来评估解决方案。

答案 1 :(得分:0)

第一个是清洁工,并且具有更好的可读性

Users.prototype.makeSalt = function(callback){
      crypto.randomBytes(64, callback);
};

如果你去看看传递给你的回调函数的参数是相同的,即第一个参数err错误对象&第二个参数buf缓冲区。实际上,只有当你想对这些值做某事时才应该干涉。在你的例子中,你没有做任何事情。所以对你而言,第一是最好的&推荐使用。

有关详细信息:Link