nodejs返回callback()和callback()之间的区别是什么

时间:2017-03-28 16:38:37

标签: javascript node.js callback

我认为如果我能确认这一点,我可能会在std::vector::resize上回答我的另一个问题。

返回回调和回调回调有什么区别?

我已经看到代码执行了/或/两者并试图解决为什么以及何时执行此操作。

function test(x, y, callback){
    return callback(null, x);
    callback(null, x + y);
}

test(1, 2, function(err, results){
    if(!err){
        console.log('results:\n', results);
    } else {
        console.error('err:\n', err);
    }   
});

编辑: 我认为我的部分问题是围绕我的Stack Overflow解决的,我会不断收到错误,已经回调了回调。

我试图理解这两种不同方式之间的概念差异在我的脑海里做同样的事情。当我问一个问题以更好地理解我还没有掌握的概念时,不知道为什么我会被拒绝。我们是不是都在这里通过提出比我们更好的程序员的问题来扩展我们的编程知识?

4 个答案:

答案 0 :(得分:5)

return callback();
//some more lines of code;

评论部分不会在上面执行,但会在下面

callback();
//some more lines of code;

编辑:

当然,返回将有助于上下文调用异步函数获取回调返回的值,但通常不会调用异步函数来分配任何内容。

另外,你通常使用if块来使用这个技巧,如下所示:

asyncFunction (params, callback) {
if(err) callback(err, null);
callback(err, result);
}

为避免回调被调用两次,你可以这样做:

asyncFunction (params, callback) {
if(err) return callback(err, null);
callback(err, result);
}

答案 1 :(得分:3)

  1. 回调(); //执行
  2. return callback()//执行并传递任何回调返回
  3. 所以

    第一个例子:test(x,y,function() {alert(done")} ); // will alert done

    第二个例子:alert(test(x,y,function() { return "done" } )); // will alert done

答案 2 :(得分:1)

return callback(null, x);

不返回callback,而是返回调用函数的结果。这是否是有意义的值取决于callback的实现。

如果您只是在没有返回结果的情况下调用callback,那么您的函数执行将在您不返回时继续执行,除非您稍后返回值,test将返回undefined最后。

总而言之,这两种方法都有意义,但这在很大程度上取决于您的具体用例。

答案 3 :(得分:0)

这里唯一真正的问题是:你想让你的callback指示外部方法的返回值吗?如果是,请使用return callback(...);否则,只需使用callback(...)