Javascript “函数foo(回调)”和“foo(arg1,arg2,函数(err,data))”之间有什么区别?
我是nodejs的初学者。我已经从下载了learnyounode模块,我正在尝试从中进行模块化练习。在练习结束时,他们提到: 还要记住,检查错误并执行以下操作是惯用的方法 回调函数中的早期返回: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
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?之间的区别。第一个是函数定义,第二个是函数调用。它们是,执行两个完全不同的操作。请查看以了解有关函数的更多信息。