如果一个函数在另一个函数中执行,是否立即将其视为回调函数?

问题描述 投票:0回答:1

我正在阅读一些有关回调的定义,在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传递。

您能否澄清?

谢谢

javascript function callback functional-programming
1个回答
3
投票
[查看the ECMAScript specification时,您会看到参数名称是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函数作为回调。
© www.soinside.com 2019 - 2024. All rights reserved.