需要帮助理解如何在回调函数中定义参数,使用这个例子(如果可能的话)

Wanted help in understanding how parameters are defined in Callback functions, using this example (if possible)

我想更多地了解回调函数在 JavaScript 中的工作原理。

我在网上找到了这个简单的示例代码,在添加导入和附加 txt 文件后它可以正常工作。但是我不确定为什么它可以工作,因为函数的参数没有在任何地方定义?

fs.readFile(`${__dirname}/temp.txt`, (err, data) => {
console.log(`Breed: ${data}`);
superagent.get(`https://dog.ceo/api/breed/${data}/images/random`).end((err,res) =>{
    console.log(res.body)
}); })

在 运行 之后,我在控制台上得到了预期的结果,其中一行显示 Breed: ${data},下一行显示 res.

的正文

然而,errdata参数从未提供给readFile中的箭头函数。 errres 参数都没有 called/provided 向控制台显示消息的值,那么这些行如何向控制台显示消息?

如果 .readFile returned a err and data value & .end returned a errres 值,但是在阅读文档后这两个函数 return void,因此我很困惑,我们将不胜感激。

您将函数传入 readFile,稍后 readFile 将调用您的函数。当它调用你的函数时,readFile 会传入相关的值。

您可以自己做类似的事情,例如:

function myReadFile(filename, callback) {
  setTimeout(() => {
    if (Math.random() > 0.5) {
      callback(null, 'fake file');
    } else {
      callback('an error', null);
    }
  }, 1000);
}

myReadFile(`${__dirname}/temp.txt`, (err, data) => {
  console.log(`Breed: ${data}`);
})

(虽然真正的 readFile 函数当然不是执行超时或随机数,而是从文件中读取并侦听该操作是否成功或出错)