This question already has an answer here:
Where to put returns around callbacks with node.js
(1个答案)
6年前关闭。
我只是想知道返回回调是否有所不同。
It was already asked here on SO,但实际上没有任何IO功能使用CPS的Node上下文中。我没有将此问题标记为Javascript,因为我认为它与该语言无关,而是更特定于nodejs和v8在内部的工作方式。
所以这两个版本的foo函数之间有什么区别(对于V8)
然后该代码将在回调后继续执行。但是,如果您添加return,控制台将永远不会执行
(1个答案)
6年前关闭。
我只是想知道返回回调是否有所不同。
It was already asked here on SO,但实际上没有任何IO功能使用CPS的Node上下文中。我没有将此问题标记为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/