"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())。
编写 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())。