Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript异步回调错误处理_Javascript_Jquery_Error Handling_Asynccallback - Fatal编程技术网

JavaScript异步回调错误处理

JavaScript异步回调错误处理,javascript,jquery,error-handling,asynccallback,Javascript,Jquery,Error Handling,Asynccallback,我有一个关于回调、错误和异步函数的问题。 下面我们有一个异步JS回调的例子,如果有错误,它会处理错误。否则,它会对接收到的对象执行某些操作 doSomething(aThing, function(error, response) { if (error) { return handleError(error); } else if (response) { return doSomething; } }); 我设想,如果有错误,其中一个参数是错误对象,另一个是nu

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

doSomething(aThing, function(error, response) {
  if (error) {
    return handleError(error);
  } else if (response) {
    return doSomething;
  }
});
我设想,如果有错误,其中一个参数是错误对象,另一个是
null
未定义的


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

它不会知道这是一个错误,它会像您所说的那样返回为null或未定义。通常,如果您试图使用未定义的内容,但希望从数据拉取中定义,则会出现错误

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


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

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


这是NodeJ中使用的常见模式:

基本上,每个回调都应该使用至少一个参数来调用,该参数指示哪里有错误或没有错误

因此,如果第一个参数为
null
,则可以假定没有错误

var fs=require('fs');
fs.readFile(“somefile.txt”,函数(err,data){
如果(错误){
log('我们有一些错误',err);
返回;
}
//对你的数据做点什么
console.log('success',数据);

});这是NodeJ中使用的常见模式:

基本上,每个回调都应该使用至少一个参数来调用,该参数指示哪里有错误或没有错误

因此,如果第一个参数为
null
,则可以假定没有错误

var fs=require('fs');
fs.readFile(“somefile.txt”,函数(err,data){
如果(错误){
log('我们有一些错误',err);
返回;
}
//对你的数据做点什么
console.log('success',数据);

});您需要确保这种协调是正确的。JS是动态类型的,因此不会为您检查,因此您需要确保正确使用任何API。因此,例如,如果您使用的是第三方API,并且它接收到一个回调来处理错误,那么您有责任阅读文档,并确切地知道应该为回调传递什么。该API的创建者需要确保回调仅以文档中描述的方式调用。好的,非常感谢。因此,基本上,它可能会根据API的不同而变化,一些可能会在第一个参数上传递错误,而另一些可能会在第二个参数上传递错误。在Node中,他们同意将第一个参数上的错误作为标准传递。没错。因为没有静态类型检查,所以API的文档非常重要。一个负责任的开发团队将彻底记录他们API的行为,并保证记录的行为不会改变。当团队决定需要进行突破性的更改时,他们会在引入更改之前发出一段时间的反对通知。因此,是的,您需要编写代码来遵循您正在使用的API。您需要确保这种协调是正确的。JS是动态类型的,因此不会为您检查,因此您需要确保正确使用任何API。因此,例如,如果您使用的是第三方API,并且它接收到一个回调来处理错误,那么您有责任阅读文档,并确切地知道应该为回调传递什么。该API的创建者需要确保回调仅以文档中描述的方式调用。好的,非常感谢。因此,基本上,它可能会根据API的不同而变化,一些可能会在第一个参数上传递错误,而另一些可能会在第二个参数上传递错误。在Node中,他们同意将第一个参数上的错误作为标准传递。没错。因为没有静态类型检查,所以API的文档非常重要。一个负责任的开发团队将彻底记录他们API的行为,并保证记录的行为不会改变。当团队决定需要进行突破性的更改时,他们会在引入更改之前发出一段时间的反对通知。因此,是的,您需要编写代码来遵循您正在使用的API。
if (data.response === undefined || data.response === null){
define error
}
if (error) {do something}