Mic*_*ael 0 javascript node.js
因此,我正在学习promise,并且为了演示promise,讲师首先从传统的回调示例开始。但是,我对他使用的语法以及似乎从中出现了一些额外参数的语法感到有些困惑。
我正在寻找的是一个愚蠢的解释,可以帮助我解决问题。这些是我的具体问题:
在下面的代码的第一行中,是“回调”和参数吗?它是函数的名称吗?或者是别的什么?
在第三和第四行,我了解我们要传递的内容(错误或结果),但是由于我们在任何地方都没有定义两个参数,所以我不了解这两个参数的来源。程序如何知道这还可以并且不会引发错误?
但是,我不需要了解何时调用该函数的帮助,因为我知道,这只是定义我困惑的函数中的一些内容。我认为这可能是使我失望的箭头语法。
我尝试过反复搜索和重新观看视频,但仍无法掌握最新情况。
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)
})
Run Code Online (Sandbox Code Playgroud)
预先感谢大家的帮助。
“回调”是一个论点吗?
不,它是参数的名称(参数是您传递给函数的参数,参数是用于从函数内部访问该参数的变量)。
它是函数的名称吗?
的种类。您可以使用该标识符访问变量(/参数),该变量保存您作为参数传递给函数的任何值。在您的情况下,您将一个函数传递给它((error, result) => ...),因此callback将引用该函数。
在第三和第四行,我了解我们要传递的内容(错误或结果),但是由于我们在任何地方都没有定义两个参数,所以我不了解这两个参数的来源。
您确实定义了一个带有两个参数((error, result) => {)的函数。但这无关紧要:您可以将任意数量的参数传递给一个函数,无论它具有多少个参数。如果传递的参数多于参数,则参数将无处可去:
alert("used", "ignored");
Run Code Online (Sandbox Code Playgroud)
如果相反,则不接收参数的参数为undefined:
function one(arg1) { /* arg1 is undefined */ }
one();
Run Code Online (Sandbox Code Playgroud)
我认为这可能是使我失望的箭头语法。
这是仅具有常规功能的版本:
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);
})
Run Code Online (Sandbox Code Playgroud)
您可以阅读有关Codeburst和MDN上的箭头功能的信息...
| 归档时间: |
|
| 查看次数: |
51 次 |
| 最近记录: |