Javascript中Callback的严格定义

问题描述 投票:0回答:1

当我试图找到Callback的定义时,我可以找到一堆信息,但问题是它们不是统一的,而是相当不同的。

我在大多数时候面临的定义之一是,Callback只是一个在高阶函数中作为参数传递的函数。例如

 function higherOrderFunction(callback, otherArguements){
      // do some stuffs
      callback();
 }

接下来最常见的是'Callback'是一个在特定函数完成后执行的函数。

在这里,我很困惑。第一个定义是关于格式(或规则),而第二个定义是关于目的。那么这两者是如此紧密相连的可能性。但我找不到连接,为什么这种联系是不可避免的。

而且,作为反例,对于第一个定义的第二个定义,我可以编写如下的函数。

EG

 function higherOrderFunction(callback, otherArguements){
     callback();
     // do some stuffs later! 
 }

然后,回调作为参数传递,但它将在其他东西之前执行,而不是在其他东西完成之前执行。

所以,我在这里很困惑。 “Callback”的严格,准确定义是什么?

callback
1个回答
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。

© www.soinside.com 2019 - 2024. All rights reserved.