Node.js 返回或不返回回调,对节点是否有影响
我只是想知道是否返回回叫会有所不同 但在节点的上下文中,几乎所有IO函数都使用CP。我没有将这个问题标记为Javascript,因为我认为它与语言无关,但更具体地说,它与nodejs和v8的内部工作方式有关 那么这两个版本的foo函数(对于V8)之间有什么区别吗Node.js 返回或不返回回调,对节点是否有影响,node.js,v8,Node.js,V8,我只是想知道是否返回回叫会有所不同 但在节点的上下文中,几乎所有IO函数都使用CP。我没有将这个问题标记为Javascript,因为我认为它与语言无关,但更具体地说,它与nodejs和v8的内部工作方式有关 那么这两个版本的foo函数(对于V8)之间有什么区别吗 // foo that returns cb(); function foo(cb) { fs.read(fd, buffer, 0, 10, 10, function(err, bytesRead, buffer) {
// 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')
});
}
是的,很明显,谢谢你的回复。但这不是我想要的:)。我想我理解你在这里的要求。你应该在这里检查标有“正确”的答案。虽然这不是一个确定的答案,但它可能会有一点启发。谢谢你的指点,好像我错过了这个问题:)。标记为重复。没问题,我很高兴这就是你要找的。有没有爱?哈哈。