为什么 Node.js 约定 async callback 第一个参数为 error ?-灵析社区

古典研发君

**个人背景:** 一个初学 node 的新人。 在读到阮一峰的入门教程时,看到了这样的讲解。 ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241128/65f2e7772a72ce18bcf9a8e710ee7fda.png) 对其中有一段描述产生了疑问, “**readFile 函数的第二个参数,就是回调函数,也就是任务的第二段** ” 紧接着阮大又解释 “**原因是执行分成两段,在这两段之间抛出的错误,程序无法捕捉,只能当作参数,传入第二段。** ” **我的理解:** 单从上述的 **fs.readFile** 操作来讲,两段操作分别为 1. 等待操作系统返回相对应的数据。 2. 执行 callback **问题:** 1. 这两段之间的错误是什么意思? 2. 为什么这两段之间无法捕捉,就得把 err 当成第一个参数了呢?反过来会产生什么问题吗?

阅读量:16

点赞量:0

问AI
1. 如果你熟悉函数的堆栈逻辑,你会明白,在传统的回调模式里,执行异步操作,和异步之后的回调函数,处于两个栈。所以前一个栈如果发生错误,在后面的栈里无法捕获 2. 于是只能对异步函数进行捕获,然后通过函数参数的形式,把错误传过来;而无法 "try ... catch ..." 整段代码 3. 至于为什么当第一个参数,因为异步函数的返回值个数不定,所以把错误放第一个比较方便将来使用