JavaScript 异步回调错误处理

JavaScript asyncronous callback error handling

我有一个关于回调、错误和异步函数的问题。 下面我们有一个异步 JS 回调的示例,如果有错误,它会处理错误。否则它会对接收到的对象做一些事情。

doSomething(aThing, function(error, response) {
  if (error) {
    return handleError(error);
  } else if (response) {
    return doSomething;
  }
});

我想,如果出现错误,其中一个参数是错误对象,另一个是nullundefined

我的问题是:匿名回调function (function(error, response){...})如何知道错误参数实际上是一个错误?如果回调函数是 function(response, error){...} 怎么办?

它不会知道这是一个错误,它只会像你说的那样返回 null 或 undefined 。如果您尝试使用未定义的东西但您希望它从数据拉取中定义,通常会出现错误。.

您可以处理错误的一种方法是,如果您从中提取的数据未定义或为空 即..

if (data.response === undefined || data.response === null){
define error
}
if (error) {do something}

这是 NodeJS 中常用的模式:Error First Callback

基本上,调用每个回调时应至少使用一个参数来指示是否存在错误...

所以,如果第一个参数是 null 你可以假设没有错误...

var fs = require('fs');

fs.readFile("somefile.txt", function(err, data) {
  if(err) {
    console.log('We have some error', err);
    return;
  }
  
  //do something with your data
  console.log('success', data);
});