我有一个关于回调,错误和异步函数的问题。 下面我们有一个异步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){...}
?
答案 0 :(得分:0)
它不会知道它是一个错误,它会像你所说的那样回归为null或undefined。通常,如果您尝试使用未定义的内容但是您希望从数据拉取中定义它,则会出现错误。
一种可以处理错误的方法是,如果您从中提取的数据是未定义的或为null 即..
if (data.response === undefined || data.response === null){
define error
}
if (error) {do something}
答案 1 :(得分:0)
这是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);
});