"error-first-callback" necessary 是否意味着需要一个双参数函数来处理该回调?

Does "error-first-callback" necessary mean a two-parameter function for doing something with that callback?

编写 Node 应用程序时,有人要求我使用 error first callback 模式。

该模式规定回调的第一个参数将是错误函数,第二个参数将是响应数据,如 fs.readFile 函数的回调所示:

fs.readFile('/foo.txt', function(err, data) {
  // TODO: Error Handling Still Needed!
  console.log(data);
});

但是,文本本身并没有说明接受回调的函数 - 这里是 readFile。

是否有关于此类功能的最佳实践?例如,有人告诉我它应该只接受两个参数,第二个是回调,就像上面的例子一样。这是正确的吗?还是可以接受任意数量的参数?回调应该是最后一次吗?如果存在这种最佳实践,其原因是什么?

错误优先回调模式只要求您的函数接受 2 个参数,第一个是错误。而你做对了。

err 不是函数。这是一个包含错误信息的对象。但是我可以null(如果你没有错误的话)。

你可以这样处理:

if(err) {
  console.log('Error !', err);
  return;
}

对您的问题稍作更正 --> 回调的第一个参数是一个错误对象,而不是您提到的错误 函数。假设是打字错误。

关于使用回调的函数,据我所知没有标准做法,但对我来说最后一个回调是有意义的。我个人觉得它更具可读性。在我看来,回调是稍后(或最后)调用的,因此回调是最后一个参数。事实上,如果你看到 expressjs 框架,路由处理函数的定义方式,回调将按照定义的顺序调用。

例如:app.get('someurl', cbfn1, cbfn2,.. cbfnN) 在上面,回调按 cbfn1、cbfn2... 到 cbfnN 的顺序调用(假设所有处理程序都调用 next())。