gpt4 book ai didi

javascript - javascript 回调只是作为函数调用中的参数发送的匿名函数吗?

转载 作者:行者123 更新时间:2023-12-04 00:20:54 26 4
gpt4 key购买 nike

Javascript callbacks只是作为函数调用中的参数发送的匿名函数?

例如,

mySandwich('ham', 'cheese', function() {  
alert('Finished eating my sandwich.');
});

最佳答案

JavaScript 回调是作为值传递给异步函数的函数,目的是为了继续。

函数是值:

因此,在 JavaScript 中,您可以传递类似值的函数。您可以通过多种方式引用函数:

  • 传递一个文字匿名函数作为回调
    doSomeWork(function (err, result) {
    if (err) {
    throw new Error(err);
    } else {
    console.log(result);
    }
    });
  • 传递一个文字命名函数作为回调
    doSomeWork(function magicalCallback(err, result) {
    if (err) {
    throw new Error(err);
    } else {
    console.log(result);
    }
    });

    (命名每个函数是一个聪明的主意,因为您可以在堆栈跟踪中看到它)
  • 传入一个变量的值,该变量恰好将函数存储为回调
    var someFunction = function callItWhatYouWant(err, result) {
    if (err) {
    throw new Error(err);
    } else {
    console.log(result);
    }
    }

    // reference the callback stored in the someFunction variable
    doSomeWork(someFunction);
  • 通过引用函数名作为回调传入函数
    function callItWhatYouWant(err, result) {
    if (err) {
    throw new Error(err);
    } else {
    console.log(result);
    }
    }

    // reference the callback function using the function name
    doSomeWork(callItWhatYouWant);

  • 继续?

    继续就是下一步。当你调用一个异步函数时,它需要通知你它已经完成。回调充当下一步,即异步函数将在完成后回调您。

    所以回调只是一个用于特定目的的函数参数,即延续。

    回调签名

    回调应该采用哪些参数没有标准,但在 Node.js 社区中,我们采用了通用签名
    function (err, result)

    哪里 errError如果发生了不好的事情,则反对,或者 null如果事情成功。如果事情变糟 result一般是 undefined , 否则它包含结果。所以你的回调通常由任何一个调用
    callback(new Error("oops"));

    或者
    callback(null, result);

    另请注意,异步函数的最后一个参数作为回调参数是正常的
    function callLater(delay, args, callback) {
    setTimeout(function () {
    callback(null, args);
    }, delay);
    }

    关于javascript - javascript 回调只是作为函数调用中的参数发送的匿名函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23882149/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com