Javascript “函数foo(回调)”和“foo(arg1,arg2,函数(err,data))”之间有什么区别?

Javascript “函数foo(回调)”和“foo(arg1,arg2,函数(err,data))”之间有什么区别?,javascript,node.js,callback,Javascript,Node.js,Callback,我是nodejs的初学者。我已经从下载了learnyounode模块,我正在尝试从中进行模块化练习。在练习结束时,他们提到: 还要记住,检查错误并执行以下操作是惯用的方法 回调函数中的早期返回: function bar (callback) { foo(function (err, data) { if (err) return callback(err) // early return // ... no error, continue doing cool

我是nodejs的初学者。我已经从下载了learnyounode模块,我正在尝试从中进行模块化练习。在练习结束时,他们提到:

还要记住,检查错误并执行以下操作是惯用的方法 回调函数中的早期返回:

function bar (callback) {
  foo(function (err, data) {
    if (err)
      return callback(err) // early return

    // ... no error, continue doing cool things with `data`

    // all went well, call callback with `null` for the error argument

    callback(null, data)
  })
}
每当我试图理解回调函数时,它们的形式如下:

foo(arg1, arg2, function(err,data){
    if(err)
        //Handle it
    //Do something with data
});
我很难理解两者之间的区别。我用google-d搜索它,但老实说,有一些页面解释了第一种回调样式,而有一些页面解释了第二种回调样式。我知道,在第二种样式functionerr中,数据是异步调用的。我对异步的理解是,foo是用arg1和arg2调用的。当foo完成functionerr时,调用数据

但是,我没有得到函数栏回调符号。他们两个都在回拨,那么他们之间有什么区别?我应该用什么符号来解决我的习题?如何决定使用哪一个以及何时使用?

在fooarg1、arg2、functionerr、data{中,您调用foo并将回调函数作为参数之一传递给它。在function foocallback中,您定义foo并说它的参数是一个您将称为回调的函数

在非异步设置中,您可以编写如下内容

//define foo
function foo(arg1, arg2){
    var someData = //...
    return someData;
}

//use foo
var data = foo(1, 2);
console.log(data);
在异步设置中,函数调用回调而不是返回值

//define foo
function fooAsync(arg1, arg2, callback){
    var someData = //...
    callback(someData);
}
而不是将返回值赋给变量,而是传递一个回调,其中该变量是一个参数:

//use foo
fooAsync(1, 2, function(data){
    console.log(data);
});
我们也可以将命名函数作为回调传递。传递匿名函数只是常见情况:

function processData(data){
    console.log(data);
}

fooAsync(1, 2, processData);
在fooarg1、arg2、functionerr、data{中,您调用foo并将回调函数作为参数之一传递给它。在function foocallback中,您定义foo并说它的参数是一个将称为回调的函数

在非异步设置中,您可以编写如下内容

//define foo
function foo(arg1, arg2){
    var someData = //...
    return someData;
}

//use foo
var data = foo(1, 2);
console.log(data);
在异步设置中,函数调用回调而不是返回值

//define foo
function fooAsync(arg1, arg2, callback){
    var someData = //...
    callback(someData);
}
而不是将返回值赋给变量,而是传递一个回调,其中该变量是一个参数:

//use foo
fooAsync(1, 2, function(data){
    console.log(data);
});
我们也可以将命名函数作为回调传递。传递匿名函数只是常见情况:

function processData(data){
    console.log(data);
}

fooAsync(1, 2, processData);

要回答标题中的问题,函数foo callback和fooarg1,arg2,functionerr,data之间有什么区别?第一个是函数定义,第二个是函数调用。它们是,并且做两件完全不同的事情。查看了解更多有关函数的信息。要回答标题中的问题,有什么区别函数foo callback和fooarg1、arg2、functionerr、data?之间的区别。第一个是函数定义,第二个是函数调用。它们是,执行两个完全不同的操作。请查看以了解有关函数的更多信息。