1

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

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

或者

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

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

4

2 回答 2

3

我会提出这无关紧要的论点。如果您需要稍微更改回调实现,您可以像选项 2 中那样通过内联代理它。如果没有,请像选项 1 一样直接传递它。

一流函数的伟大之处在于它们提供了这种灵活性。这意味着没有那么多既定的最佳实践规则,而是根据与手头场景相关的优点来评估解决方案。

于 2013-08-21T12:14:37.853 回答
0

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

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

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

欲了解更多信息:链接

于 2013-08-21T12:31:29.443 回答