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 }