处理node.jscallback的最佳实践

我正在创build一个JavaScript类,并在这个函数中使用了node.js中的encryption模块。 我不确定哪个是最好的方法来处理callback。 看看例子并解释。

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); }); }; 

哪一个是首选方法还是最佳实践? 在第一个中,我将callback直接发送到模块中定义的函数,并让它处理callback。 在第二个我通过接收函数的callback自己处理callback。 我觉得第一个是首选,除非我需要任何定制。 但我在node.js和javascript的技能方面非常新手,所以想知道两种方法之间的区别,哪一个会更好?

我会说,这并不重要。 如果您需要稍微更改callback实现,则可以通过内联代理它,如同在选项2中一样。如果不是,则直接按照选项1进行代理。

头等function的伟大之处在于它们提供了这种灵活性。 这意味着没有尽可能多的最佳实践规则,而是根据它们与手头情景相关的优点来评估解决scheme。

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

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

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

欲了解更多信息: 链接