我只是想知道返回回调是否有区别。
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);
});
}
最佳答案
在这种情况下不会,因为回调下面没有代码。如果您在回调下有代码,例如
// 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')
});
}
那么回调后代码会继续执行。但如果你添加 return 控制台将永远不会执行
// 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')
});
}
关于node.js - 返回或不回调,对 Node 有影响吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21038808/