【问题标题】:Why does node.js look for error as the first parameter in a callback为什么 node.js 在回调中寻找错误作为第一个参数
【发布时间】:2016-02-06 23:47:43
【问题描述】:

我有以下简单的代码。但是“数据”变量不返回 input.txt 的内容。

var fs = require("fs");

fs.readFile('input.txt', function (data) {
     console.log(data.toString());
});

console.log("Program Ended");

下面的代码有效,因为node.js读取第一个参数err,而input.txt的内容来自第二个参数

var fs = require("fs");

fs.readFile('input.txt', function (err, data) {
   if (err) return console.error(err);
   console.log(data.toString());
});

console.log("Program Ended");

这只是一个 node.js 的东西来寻找第一个参数中的错误吗?如果我不想检查回调函数中的错误怎么办?

【问题讨论】:

  • “如果我不想检查回调函数中的错误怎么办?”您只需忽略该参数即可。

标签: javascript node.js


【解决方案1】:

将错误作为第一个参数传递给回调函数是惯例。首先是防止它被忽视。当然,您不必检查它,但如果出现错误,您的 data 很可能是坏的或毫无意义的。

fs.readFile('input.txt', function (data) { 不起作用的原因是错误被传递到您的data 变量中,因为它是第一个参数。参数的实际命名无所谓,参数顺序由fs.readFile决定。

【讨论】:

  • 我明白了,这是惯例。那么,这适用于所有 node.js 回调函数吗?
  • @SwolleyBible:差不多。但是相应的文档会告诉你。
  • @SwolleyBible 这只是一个约定,但它几乎在任何地方都被使用,这是有充分理由的。在您的情况下,写fs.readFile 的人认为第一个回调参数是错误。没有理由你不能编写一个接受具有不同参数顺序的回调的函数,但如果你这样做会令人困惑和不一致。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-17
  • 1970-01-01
  • 1970-01-01
  • 2020-04-05
  • 2011-03-03
  • 1970-01-01
  • 2020-09-21
相关资源
最近更新 更多