JavaScript 异步回调错误处理
JavaScript asyncronous callback error handling
我有一个关于回调、错误和异步函数的问题。
下面我们有一个异步 JS 回调的示例,如果有错误,它会处理错误。否则它会对接收到的对象做一些事情。
doSomething(aThing, function(error, response) {
if (error) {
return handleError(error);
} else if (response) {
return doSomething;
}
});
我想,如果出现错误,其中一个参数是错误对象,另一个是null
或undefined
。
我的问题是:匿名回调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);
});
我有一个关于回调、错误和异步函数的问题。 下面我们有一个异步 JS 回调的示例,如果有错误,它会处理错误。否则它会对接收到的对象做一些事情。
doSomething(aThing, function(error, response) {
if (error) {
return handleError(error);
} else if (response) {
return doSomething;
}
});
我想,如果出现错误,其中一个参数是错误对象,另一个是null
或undefined
。
我的问题是:匿名回调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);
});