我正在阅读一些有关回调的定义,在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传递。
您能否澄清?
谢谢
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
函数作为回调。