首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >像fs.writeFile()回调参数这样的函数是如何工作的?

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

Stack Overflow用户
提问于 2020-10-23 11:03:22
回答 2查看 213关注 0票数 0

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

代码语言:javascript
运行
复制
fs.writeFile(
path.join(__dirname, 'test', 'hello.txt'), 
"Hello World", 
err => {
if (err) throw err;
console.log('File Created...')})

我想知道"err“在哪里被定义为ErrNoException类型。

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2020-10-23 12:25:18

我想知道“

”在哪里被定义为ErrNoException类型。

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

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

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

不清楚您所说的“定义为ErrNoException类型”到底是什么意思。Nodejs有一个名为errNoException()的内部函数(外部不可用),您可以看到源here。它在内部使用该函数来创建具有一些常见属性的错误对象,例如错误代码和堆栈跟踪。

票数 0
EN

Stack Overflow用户

发布于 2020-10-23 12:26:03

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

代码语言:javascript
运行
复制
function getData(url, callback) {
    fetch(url)
        .then(res => callback(null, res))
        .catch(err => callback(err, null))
}

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

代码语言:javascript
运行
复制
getData('http://stackoverflow.com', (err, res) => {
     if(err)
         return console.log(err)
     console.log(res)
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64493259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档