callback()或返回callback()

有可能我不太了解Node的事件循环。

说我有一个函数foo包含一个asynchronous函数async_func 。 我有吗

 //1 function foo(callback) { //stuff here async_func(function() { //do something callback(); }); //this eventually get executed } 

要么

 //2 function foo(callback) { //stuff here async_func(function() { //do something return callback(); }); //never executed } 

实际上,在你的示例2中, //never executed执行每次都会执行。 它从callback中返回,而不是从包装函数中返回。

有时调用者实际上期待一些返回值,并且行为可以基于此而改变。 看到返回callback()的另一个常见原因只是将你所在function短路的一种明显方式。

 function doSomething(callback) { something(function(err, data) { if(err) return callback(err); // Only run if no error }); // Always run } 

即使返回值没有被使用,它也使用return来确保执行不会超过错误条件。 你可以用这种方式轻松地写出这个效果。

 function doSomething(callback) { something(function(err, data) { if(err) { callback(err); return; } // Only run if no error }); // Always run }