像fs.writeFile()回调参数这样的函数是如何工作的



我现在正在学习JavaScript,特别是NodeJS。在一个基本教程中,我注意到一些函数具有带有预定义参数的回调。例如

fs.writeFile(
path.join(__dirname, 'test', 'hello.txt'), 
"Hello World", 
err => {
if (err) throw err;
console.log('File Created...')})

我想知道";错误"定义为CCD_ 1类型。

谢谢!

您可以自己编写类似的函数。回调只是一个函数(F(,它作为一个参数传递给另一函数(a(。函数(A(执行一些任务,然后根据参数执行函数F。例如:

function getData(url, callback) {
fetch(url)
.then(res => callback(null, res))
.catch(err => callback(err, null))
}

在示例函数中,发生的情况是,在发出获取请求后,我们等待,直到生成响应或错误。如果有响应,我们只需将其传递给回调参数2,并将第一个参数调用为null,反之亦然。现在,在调用函数时,

getData('http://stackoverflow.com', (err, res) => {
if(err)
return console.log(err)
console.log(res)
})

我想知道哪里是"错误"定义为ErrNoException类型。

在这种类型的接口中,您传递一个回调函数,fs.writeFile()决定它在调用回调函数时将传递哪些参数。您可以自行声明回调函数,使其具有与调用者将传递的参数相匹配的适当名称的参数。因此,您必须使用适当名称的自变量来声明回调。由于Javascript不是一种类型化语言,所以您不知道该参数的类型。参数的类型由调用回调的代码决定。在这种情况下,这就是fs.writeFile()实现。要正确使用回调,您必须阅读fs.writeFile()的文档,以便了解如何使用回调的参数。

因此,在这种特定情况下,fs.writeFile()需要一个回调函数,该回调函数将被传递一个参数,该参数将由null传递(如果没有错误(,或者将是一个解释错误的error对象(。您必须通过阅读fs.writeFile()的代码或阅读一些文档来了解这一点

重要的是要认识到,当您定义回调函数时,您所要做的就是为您期望调用回调的参数提供一个名称。然后,您可以在代码中使用该名称来引用这些参数。调用回调时传递给该回调的实际数据将由fs.writeFile()函数在调用回调时提供。

你所说的";定义为ErrNoException类型";。Nodejs有一个名为errNoException()的内部函数(不能对外使用(,您可以在这里看到源代码。它在内部使用该函数来创建具有一些常见属性(如错误代码和堆栈跟踪(的Error对象。

最新更新