当我尝试找到Callback的定义时,我可以找到很多信息,但是问题是它们不是统一的,而是完全不同的。
我经常遇到的定义之一是,回调只是一个作为参数传递给高阶函数的函数。例如
function higherOrderFunction(callback, otherArguements){
// do some stuffs
callback();
}
其次,最常见的是“回调”是在特定功能完成后执行的功能。
在这里,我很困惑。第一个定义与格式(或规则)有关,而第二个定义与目的有关。那么,这两者之间的联系是如此紧密。但是我还找不到连接,以及为什么这种连接是不可避免的。
另外,作为反例,对于第一个定义的第二个定义,我可以编写如下的函数。
例如
function higherOrderFunction(callback, otherArguements){
callback();
// do some stuffs later!
}
然后,将回调作为参数传递,但是它将在其他内容之前执行,而不是在其他内容完成之前执行。
所以,我在这里很困惑。 “回调”的严格,确切的定义是什么?
答案 0 :(得分:0)
如果您只想在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为止。