返回或不callback,这是否有所作为节点

我只是想知道是否有所作为返回callback或不。

它已经在SO上被问到了,但是在Node中没有任何IO函数使用CPS。 我没有把这个问题标记为Javascript,因为我相信这个问题与语言无关,但更具体到nodejs和v8如何在内部工作。

那么这两个版本的foo函数之间有什么区别(对于V8)呢?

// foo that returns cb(); function foo(cb) { fs.read(fd, buffer, 0, 10, 10, function(err, bytesRead, buffer) { return cb(buffer); }); } // foo that won't return cb() function foo(cb) { fs.read(fd, buffer, 0, 10, 10, function(err, bytesRead, buffer) { cb(buffer); }); } 

       

网上收集的解决方案 "返回或不callback,这是否有所作为节点"

在这种情况下,它不会因为callback下面没有代码。 如果你有如下的callback代码

 // foo that won't return cb() function foo(cb) { fs.read(fd, buffer, 0, 10, 10, function(err, bytesRead, buffer) { cb(buffer); console.log('yup') }); } 

然后代码将在callback之后继续执行。 但是,如果你添加返回控制台永远不会执行

 // foo that won't return cb() function foo(cb) { fs.read(fd, buffer, 0, 10, 10, function(err, bytesRead, buffer) { return cb(buffer); //will never execute below console.log('yup') }); }