当我试图找到Callback的定义时,我可以找到一堆信息,但问题是它们不是统一的,而是相当不同的。
我在大多数时候面临的定义之一是,Callback只是一个在高阶函数中作为参数传递的函数。例如
function higherOrderFunction(callback, otherArguements){
// do some stuffs
callback();
}
接下来最常见的是'Callback'是一个在特定函数完成后执行的函数。
在这里,我很困惑。第一个定义是关于格式(或规则),而第二个定义是关于目的。那么这两者是如此紧密相连的可能性。但我找不到连接,为什么这种联系是不可避免的。
而且,作为反例,对于第一个定义的第二个定义,我可以编写如下的函数。
EG
function higherOrderFunction(callback, otherArguements){
callback();
// do some stuffs later!
}
然后,回调作为参数传递,但它将在其他东西之前执行,而不是在其他东西完成之前执行。
所以,我在这里很困惑。 “Callback”的严格,准确定义是什么?
如果你只是想在callback()
之前做点什么,使用higherOrderFunction
没有多大好处。
大多数回调用于从另一个异步调用/进程获得结果,即
function callback(err, rows){
if (err) {
console.log(err);
return null;
} else {
return rows;
}
}
function queryDB(callback, sql){
// Do the database suff
callback(err, rows);
}
通过使用回调,您可以避免等待/比赛的问题,即
var IneedResultsFromDatabase=queryDB("some SQL");
//But you need to wait [I don't know how many] seconds before I get a result.
print(IneedResultsFromDatabase);//gives you undefined
正确的方法是使用回调(javascript示例):
var data=queryDB(callback, sql);
因此,默认情况下,它会一直等到你得到一个结果,或者记录错误并返回null。