繁体   English   中英

¿有人可以向我解释 JavaScript 中的回调吗? - 初学者

[英]¿Someone can explain to me Callback in JavaScript? - beginner

我是这个世界的初学者,我觉得自己有点迷路了。

我在 udemy 买了一门课程,这就是例子:

function add( a, b, cb) {
    const r = a + b 
    cb(r)
}

function callback(result) {
    console.log('This is the result', result);
}

add(2, 3, callback)

这是我不明白的部分:cb(r) - 为什么“cb”在我的代码的那部分(添加(a,b, cb ))并稍后重复? 我想知道我们将 const r 的结果保存在 Cb(r) 中,但我不知道为什么在两个部分中

为什么当我在我的终端中运行它时,它首先回调 function 并添加 function?

如果有人可以向我解释这里发生了什么,我将不胜感激

我只是想知道它是如何工作的,因为它听起来在这条路上很重要,它运行但我不知道为什么

您编写function addfunction callback的顺序无关紧要。 它们只是定义,即关于如何做某事的食谱。 但是除非调用它们,否则仅通过编写函数实际上什么也做不了。

通过写function add(a, b, cb) ,你只是说“我正在写一个名为 add 的 function,它应该接收 3 个参数作为输入,我将它们命名为 a、b 和 cb。 ”但你不知道还不知道它们的价值是多少。 您只需以这种方式命名它们,以便能够对它们进行操作。 当你调用cb(r)时,你基本上不知道 cb 是什么,你只知道它是一个稍后要完成的 function。

基本上你的代码不会按照你写的顺序执行。

Javascript 在读取add(2, 3, callback)时开始执行操作。 此时它明白它需要执行function add ,你给它三个参数,其中两个是数字,第三个是 function。但是它还没有执行function 回调,它只知道它姓名。 现在,它只是搜索function add所在的代码,然后首先执行此代码,其中a=2、b=3 和 cb=callback

一旦找到它,就会跳转到function add的开头,创建一个新常量 r并将a+b放入其中。 当它看到Cb(r)时,它采用您提交给它的第三个参数,在本例中为function 回调,并使用参数r调用它。 因此,它再次跳转到 function 回调的开头,并使用参数r执行它。

在此示例中,无需使用回调 function,这只是说明回调概念的基本示例。 但是正如您帖子的评论中所说,您可能需要编写第二个回调 function,例如:

function anotherCallback(result) {
    console.log('This is ANOTHER result', result);
}

然后你可以打电话

add(2, 3, callback)
add(4, 5, anotherCallback)

无需重新编写 function 添加。

我已尝试使其尽可能详细,我希望这是清楚的,但如果不清楚,请不要犹豫,提出更多问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM