Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 返回或不返回回调,对节点是否有影响_Node.js_V8 - Fatal编程技术网

Node.js 返回或不返回回调,对节点是否有影响

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) {

我只是想知道是否返回回叫会有所不同

但在节点的上下文中,几乎所有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) {
        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')
    });
}

是的,很明显,谢谢你的回复。但这不是我想要的:)。我想我理解你在这里的要求。你应该在这里检查标有“正确”的答案。虽然这不是一个确定的答案,但它可能会有一点启发。谢谢你的指点,好像我错过了这个问题:)。标记为重复。没问题,我很高兴这就是你要找的。有没有爱?哈哈。