【问题标题】:Best Practices in handling callbacks in node.js [closed]在 node.js 中处理回调的最佳实践 [关闭]
【发布时间】:2013-08-23 19:05:51
【问题描述】:

我正在创建一个 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 方面的技能非常新手,所以想知道这两种方法之间的其他区别是什么哪个是首选??

【问题讨论】:

  • 由于第二个函数的作用与第一个函数完全相同相同,因此第一个函数更短更简洁。如果您需要在回调数据之前对其进行操作,那么第二种方法就是要走的路。

标签: javascript node.js express closures


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    第一个更干净,可读性更好

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

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

    欲了解更多信息:Link

    【讨论】:

      猜你喜欢
      • 2011-11-10
      • 2014-11-28
      • 1970-01-01
      • 2011-05-30
      • 2020-12-24
      • 2018-10-27
      • 2010-09-07
      相关资源
      最近更新 更多