javascript - 如果一个函数在另一个函数内部执行,它会立即成为回调函数吗?
问题描述
我一直在阅读一些关于回调的定义,在 FCC 上,它指出:
“回调是滑入或传递给另一个函数以决定调用该函数的函数。”
现在,这造成了一些混乱,因为在以下情况下prepareTea()
将有资格作为回调:
const prepareTea = () => 'greenTea';
const getTea = (numOfCups) => {
const teaCups = [];
for (let cups = 1; cups <= numOfCups; cups += 1) {
const teaCup = prepareTea();
teaCups.push(teaCup);
}
return teaCups;
};
但据我所知,要成为回调,它需要作为 arg 传入。
你能澄清一下吗?
谢谢
解决方案
回调是一个函数,它作为稍后执行的参数传递给另一个函数。
当您查看ECMAScript 规范时,您会看到参数名称callbackFn
期望函数作为参数。
您的代码没有使用任何回调函数,但我们可以将它们一起转换以供使用。
const prepareTea = () => 'greenTea';
const getTea = (numOfCups, callbackFn) => {
const teaCups = [];
for (let cups = 1; cups <= numOfCups; cups += 1) {
const teaCup = prepareTea();
teaCups.push(teaCup);
}
console.log('Created cups');
callbackFn(teaCups);
};
const callbackFunction = cups => {
console.log('Number of cups', cups.length);
}
getTea(4, callbackFunction); // Pass callbackFunction as an argument to getTea
我们已经用作callbackFunction
回调。我们将其定义为常规函数,但将其用作回调。所以这意味着我们可以使用任何函数作为回调。
为什么prepareTea
不用作回调?
因为你直接使用了它的返回值。如果您的prepareTea
函数定义如下:
const prepareTea = cb => cb('greenTea');
您将此功能用作:
prepareTea(tea => teaCups.push(tea));
然后你可以说你使用了这个prepareTea
函数作为回调。
推荐阅读
- javascript - 它应该是一个下拉列表。它的按钮是主要的。但它不起作用。无论我尝试多少,列表都不会显示
- java - 在 Windows 10 教育版的 VS Code 中运行 Java
- python-3.x - AWS MSK 设置通告的侦听器
- node.js - 在MongoDB的实例数组中只拉一个项目?
- javascript - 如何在 ACF for Wordpress 中动态添加字段(使用循环?)?
- mongodb - 如何在 mongoDB 中执行通用查找?
- python - Python docx table addrow() 忽略了我的第三行
- .htaccess - 如果它是批准的子域,则防止重定向到 www
- javascript - 在 forEach 函数返回一个空数组之后
- wix - 错误:在包中找不到 .inf 文件引用的一个或多个文件 (wix)