提问人:JAR. 提问时间:12/2/2022 最后编辑:Abito PrakashJAR. 更新时间:12/2/2022 访问量:56
¿有人可以向我解释 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”在我的代码的那部分(add(a,b,cb))中,稍后再重复? 我们把 const r 的结果保存在 Cb(r) 中,但我不知道为什么在这两部分中
¿为什么当我在终端中运行它时,它首先出现回调函数并添加函数?
如果有人可以一步一步地向我解释这里发生的事情,我将不胜感激
我只是想知道这是如何工作的,因为它听起来在这条路上很重要,它运行但我不知道为什么
答:
编写函数添加和函数回调的顺序无关紧要。它们只是定义,即关于如何做某事的食谱。但是,除非调用它们,否则仅通过编写函数实际上不会完成任何操作。
通过编写函数 add( a, b, cb),你只需说“我正在编写一个名为 add 的函数,它应该接收 3 个参数作为输入,我将它们命名为 a、b 和 cb。但你还不知道它们的价值是什么。你只是以这种方式命名它们,以便能够用它们做事。当你调用 cb(r) 时,你基本上不知道 cb 是什么,你只知道它是一个稍后要完成的函数。
基本上,你的代码不会按照你编写代码的顺序执行。
Javascript 在读取 add(2, 3, callback) 时开始做事。在这一点上,它明白它需要执行函数 add,你已经给了它三个参数,其中两个是数字,第三个是函数。但它还没有执行函数回调,它只知道它的名字。现在,它只是在函数 add 所在的代码中搜索并首先执行这个代码,使用 a=2、b=3 和 cb=callback。
一旦找到它,就会跳转到函数 add 的开头,创建一个新的常量 r 并将 a+b 放入其中。当它看到 Cb(r) 时,它会获取您提交给它的第三个参数,在本例中为函数回调,并使用参数 r 调用它。因此,它再次跳转到函数回调的开头并使用参数 r 执行它。
在此示例中,无需使用回调函数,这只是说明回调概念的基本示例。但正如您帖子的评论中所说,您可能想编写第二个回调函数,例如:
function anotherCallback(result) {
console.log('This is ANOTHER result', result);
}
然后你可以打电话
add(2, 3, callback)
add(4, 5, anotherCallback)
无需重新编写函数 add。
我试图让它尽可能详细,我希望这是清楚的,但如果没有,请不要犹豫,提出进一步的问题。
评论
callback
add(2, 3, anotherCallback)
add