您可以向我解释此JavaScript回调函数吗?



如果我有以下回调函数:

a(function  () {
  b() 
})

我的理解是,A将首先执行,然后B完成后

,但通常在编程中,您将参数传递到paranthess中的函数,对吗?因此,在此功能中,您似乎正在通过

function  () {
  b() 
}

函数a作为参数。因此,根据我对编程的了解,A应该以所有这些论点为由执行吗?

但是,根据我对回调的了解,这意味着,所有这些函数都执行后所有这些执行。你能看到矛盾吗?另外,如果没有参数,函数不会执行?

do参数在JavaScript中的工作方式不同。默认情况下,括号中的所有内容是否在功能本身之后执行?

a()函数必须具有一个实际上是回调的参数,它不仅是自动工作

function a(callback) {  // callback argument
    // do lots of stuff
    callback(); // call the function after stuff has been done
}
a(function() {
    b();
});

您也可以做

a(b);

并将参数传递给回调

function a(callback) {  // callback argument
    // do lots of stuff
    callback(param1, param2, param3);
}
a(function(param1, param2, param3) { // here we get them back
    b(param2); // and we can pass them along
});

这对于异步行为特别有用

function a(callback) {  // callback argument
    $.ajax({
        // ajax arguments
    }).done(function(returned_data) {
        callback(returned_data);
    });
}
a(function(returned_data) { // data from the ajax call
     // do something with returned_data
});

这只是一个示例,$ .ajax返回了更方便使用的诺言,但它显示了回调如何与异步函数一起使用。

作为旁注,您通常会看到无法保证回调的代码,然后检查是否有回调函数作为参数传递是有意义的

function a(callback) {  // callback argument
    // do lots of stuff
    if (typeof callback === 'function') {
        callback();
    }
}

最新更新