【问题标题】:Why callbacks in Node.js almost always take an error as their first argument?为什么 Node.js 中的回调几乎总是将错误作为第一个参数?
【发布时间】:2015-03-19 17:55:28
【问题描述】:

如下代码所示:

var fs = require('fs');
fs.readFile('somefile.txt', function(err, data) {
  if(err) {
    return console.error(err);
  }
  console.log(data.toString('utf8'));
});

我知道,如果发生错误信息,我们可以轻松捕获它。
但我想知道这种方法是如何逐渐演变的。
我将不胜感激任何可以很好地解释它的指针/文章。

【问题讨论】:

  • 不要忘记错误处理? :-)

标签: javascript node.js asynchronous callback


【解决方案1】:

这是强制程序员不要偷懒并忽略错误的设计选择。

Javascript 允许您调用参数少于或多于指定参数的函数。例如:

function foo (a,b) {
    console.log(a,b);
}
foo(100); // not an error
foo(100,200,300); // also not an error

这意味着,如果错误被定义为第二个参数:

async(function (data,err) {/*...*/});

懒惰的程序员可以简单地懒惰并通过以下方式忽略错误:

async(function (data) {/*...*/});

当然,这并不能阻止人们忽略错误。但至少它迫使他们写下参数,以便将来维护代码的程序员会想起丢失的错误处理程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-14
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多