Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript node.js中处理回调的最佳实践_Javascript_Node.js_Express_Closures - Fatal编程技术网

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

Javascript node.js中处理回调的最佳实践,javascript,node.js,express,closures,Javascript,Node.js,Express,Closures,我正在创建一个javascript类,其中有一个函数使用node.js中的crypto模块。我不确定哪种方式是处理回拨的最佳方式。看一看这个例子并解释 Users.prototype.makeSalt = function(callback){ crypto.randomBytes(64, callback); }; 或 以下哪一种是首选方法或最佳实践?在第一个示例中,我将回调直接发送到模块中定义的函数,并让它处理回调。在第二个例子中,我通过接收函数的回调来处理回调。我觉得第一个是

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

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


以下哪一种是首选方法或最佳实践?在第一个示例中,我将回调直接发送到模块中定义的函数,并让它处理回调。在第二个例子中,我通过接收函数的回调来处理回调。我觉得第一个是首选,除非我需要任何定制但是我对node.js和javascript的技能非常熟悉,所以我想知道这两种方法之间的另一个区别是什么,哪种方法更可取???

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

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

第一个是更干净的,具有更好的可读性

Users.prototype.makeSalt = function(callback){
      crypto.randomBytes(64, callback);
};
如果您看到传递给回调函数的参数是相同的,即第一个参数
err
error对象和第二个参数
buf
buffer。实际上,只有当您想对这些值进行操作时,才应该进行干预。在你的例子中,你什么都没做。所以对你来说,第一个是最好的,推荐的


有关详细信息:

由于第二个函数与第一个函数的作用完全相同,因此第一个函数更短、更干净。如果在调用数据之前需要对其进行操作,那么第二种方法就是。
Users.prototype.makeSalt = function(callback){
      crypto.randomBytes(64, callback);
};