什么是回调函数?

What are callback function?

我问了一个朋友,问这个代码中的(data, function(i,e)是什么,他说这是回调然后我在网上搜索回调但不明白。我读到了这个 What are callback methods?什么是最简单的回调?

 $.each(data, function(i,e){
   console.log(e.id);
 });

这里(data, function(i,e)有什么用?

 $.ajax({
        type: "GET",
        url: pbxApi+"/confbridge_participants/conference_participants.json?cid="+circle,
        dataType: "jsonp",
        jsonpCallback: 'callback',
        contentType: "application/javascript",
        success: function(data) {

         console.log(data);

        }
        });

回调函数是作为参数传递给另一个函数的函数,回调函数在另一个函数内部被调用(或执行)。 像这样

(data, function(i,e)

我们可以像变量一样传递函数,return 在函数中传递它们,并在其他函数中使用它们。当我们将回调函数作为参数传递给另一个函数时,我们只是在传递函数定义。

注意回调函数不会立即执行。它在包含函数主体内的某个指定点“回调”。欲了解更多信息 Refer Here

一个被回调的回调方法。

谁给你回电话了?

你的框架回调它。

为什么会回调?

因为你要求它被回调,因为你想在发生某些事情时做一些处理。

例子

  1. 您正在进行一些处理,但不知道何时完成。您提供一个回调,然后继续其他一些工作。您的回调函数将被回调以告诉您处理已完成,您现在可以做一些事情了。

  2. 您想知道某个控件何时触发某个事件,以便您可以进行一些处理。您提供一个回调函数作为事件处理程序。

  3. 您对框架完成的默认处理不满意并想覆盖该处理,您提供回调,框架回调它以使用您自己的处理。

所以,一般来说:您要求 component/framework 调用您提供的方法。你永远不会从你的代码中调用提供的方法,其他人会回调它。

正常情况下,JavaScript条语句是逐行执行的。但是,有了效果,即使效果没有完成,下一行代码也可以是运行。这可能会产生错误。

为防止这种情况,您可以创建一个回调函数。

当前效果完成后执行回调函数

例如,这是一个回调函数:

$("button").click(function(){
    $("p").hide("slow", function(){
        alert("The paragraph is now hidden");
    });
});

在这种情况下,函数 hide 将在该警报之前执行,这正是我们想要的。

另一方面,如果您不使用回调函数,请这样说:

$("button").click(function(){
    $("p").hide(1000);
    alert("The paragraph is now hidden");
});

在这种情况下,alert 甚至会在函数 hide 执行之前执行。这是回调函数在Javascript.

中的典型用法

回调函数是您指定给现有 function/method 的函数,在操作完成、需要额外处理等时调用

*这里有一些小东西可以让你更好地理解回调:

Guy 1 到 Guy 2:嘿伙计,我想在用户点击那里时做点什么,发​​生这种情况时给我回电话好吗?

当用户点击此处时,小伙子 2 给小伙子 1 回电话。*