我只是想知道返回回调是否有所作为。
It was already asked here on 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);
});
}
答案 0 :(得分:2)
在这种情况下它不会,因为回调下面没有代码。如果您在回调下有代码,例如
// 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')
});
}
然后代码将在回调后继续执行。但是如果添加返回,控制台将永远不会执行
// 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')
});
}