初学者在这里.我需要帮助更好地理解这个回调函数



所以,我正在学习承诺,为了演示承诺,讲师首先从传统的回调示例开始。但是,我对他使用的语法以及似乎从哪里出现一些额外的参数有点困惑。

我正在寻找的是一个愚蠢的解释,以帮助我理解它。这些是我的具体问题:

  1. 在下面代码的第一行中,是"回调"和参数吗?是函数的名称吗?还是别的什么?

  2. 第三行和第四行,我了解我们传入的内容(错误或结果),但我不明白这两个参数来自哪里,因为我们没有在任何地方定义两个参数。程序如何知道没问题并且不会抛出错误?

不过,我不需要帮助来理解何时调用函数,因为我明白这一点,这只是定义函数时我感到困惑的一些东西。我认为可能是箭头语法让我失望了。

我尝试在谷歌上搜索并一遍又一遍地重新观看视频,但仍然无法掌握发生了什么。

const doWorkCallback = (callback) => {
setTimeout(() => {
// callback('This is my error', undefined)
callback(undefined, [1, 4, 7])
}, 2000)
}
doWorkCallback((error, result) => {
if(error) {
return console.log(error)
}
console.log(result)
})

"回调"是一个参数吗?

不,它是参数的名称(参数是您传递给函数的内容,参数是用于从函数内部访问该参数的变量)。

是函数的名称吗?

有点。您可以使用该标识符访问变量(/参数),该变量保存您作为参数传递给函数的任何值。在您的情况下,您将一个函数传递给它((error, result) => ...),因此callback将引用该函数。

第三行和第四行,我了解我们传入的内容(错误或结果),但我不明白这两个参数来自哪里,因为我们没有在任何地方定义两个参数。

您确实定义了一个接受两个参数 ((error, result) => {) 的函数。但这并不重要:你可以将任意数量的参数传递给函数,无论它有多少参数。如果传递的参数多于参数,则参数将无处可去:

alert("used", "ignored");

如果反过来,则未收到参数的参数undefined

function one(arg1) {  /* arg1 is undefined */ }
one();

我认为可能是箭头语法让我失望了。

这是一个仅具有常规功能的版本:

function doWorkCallback(callback) {
setTimeout(function() {
// callback('This is my error', undefined);
callback(undefined, [1, 4, 7]);
}, 2000);
}
doWorkCallback(function (error, result) {
if(error) {
return console.log(error);
}
console.log(result);
})

您可以在 Codeburst 和 MDN 上阅读有关箭头函数的信息......

1- 是的,callbackdoWorkCallback函数的参数。

2-您正在传递一个函数,而不是两个参数。该函数确实会收到太errorresult的参数。

因此,如果您转到doWorkCallback函数,您会看到您将调用回调,未定义为错误,每2秒[1, 4, 7]一次结果

最新更新