什么是回调函数?


当前回答

假设我们有一个函数sort(int*arraytobesorted,void(*algorithm selected)(void)),它可以接受一个函数指针作为其参数,可以在sort()实现的某个点使用。然后,这里选择的函数指针算法所处理的代码被称为回调函数。

我们可以选择任何算法,比如:

  1.    algorithmchosen = bubblesort
  2.    algorithmchosen = heapsort
  3.    algorithmchosen = mergesort   ...

比如说,已经用原型实现了:

  1.   `void bubblesort(void)`
  2.   `void heapsort(void)`
  3.   `void mergesort(void)`   ...

这是用于实现面向对象编程中的多态性的概念

其他回答

这使得回调听起来像方法末尾的返回语句。

我不确定这是什么。

我认为回调实际上是对一个函数的调用,是另一个函数被调用和完成的结果。

我还认为回调是为了处理原始调用,以一种“嘿!你要的东西?我已经做了-我想我会让你知道-还给你”的方式。

回调与回调函数

回调是在另一个函数完成执行后执行的函数 — 因此得名“回电”。

什么是回调函数?

将Funs(即函数对象)作为参数或返回Funs的函数称为高阶函数。任何作为参数传递的函数都称为回调函数。回调函数是作为参数传递给另一个函数(让我们调用这个其他函数otherFunction)的函数,回调函数在otherFunction内部调用(或执行)。

    function action(x, y, callback) {
        return callback(x, y);
    }
    
    function multiplication(x, y) {
        return x * y;
    }
    
    function addition(x, y) {
        return x + y;
    }

    alert(action(10, 10, multiplication)); // output: 100

    alert(action(10, 10, addition)); // output: 20

在SOA中,回调允许插件模块从容器/环境访问服务。

来源

这个问题的简单答案是回调函数是通过函数指针调用的函数。如果您将一个函数的指针(地址)作为参数传递给另一个函数,则当该指针用于调用它所指向的函数时,称为进行了回调

让我们保持简单。什么是回调函数?

抛物线和类比示例

我有一个秘书。每天我都会让她:(I)把公司的邮件寄到邮局,等她寄完之后,再做:(ii)我在那些便笺上为她写的任何任务。

现在,便笺上的任务是什么?任务每天都不同。

假设在这一天,我要求她打印一些文件。所以我把它写在便笺上,然后把它和她需要寄的邮件一起钉在她的桌子上。

总而言之:

首先,她需要放下邮件完成后,她需要立即打印一些文件。

回调函数是第二项任务:打印这些文档。因为这是在邮件投递后完成的,同时也是因为通知她打印文档的便笺和她需要邮寄的邮件一起给了她。

现在让我们将其与编程词汇联系起来

本例中的方法名为:DropOffMail。回调函数是:PrintOffDocuments。PrintOffDocuments是回调函数,因为我们希望秘书只有在DropOffMail运行后才能这样做。因此,我会将PrintOffDocuments作为“参数”传递给DropOffMail方法。这是一个重要的点。

仅此而已,没什么了。我希望这能为你澄清——如果没有,请发表评论,我会尽力澄清。

回调函数也称为高阶函数,是作为参数传递给另一个函数的函数,回调函数在父函数内调用(或执行)。

$("#button_1").click(function() {
  alert("button 1 Clicked");
});

这里我们将一个函数作为参数传递给click方法。click方法将调用(或执行)我们传递给它的回调函数。