【发布时间】:2016-12-13 12:03:13
【问题描述】:
我有一个关于回调、错误和异步函数的问题。 下面我们有一个异步 JS 回调的示例,如果有错误,它会处理错误。否则它会对收到的对象做一些事情。
doSomething(aThing, function(error, response) {
if (error) {
return handleError(error);
} else if (response) {
return doSomething;
}
});
我想,如果出现错误,其中一个参数是错误对象,另一个是null 或undefined。
我的问题是:匿名回调function (function(error, response){...})怎么知道error参数实际上是错误?如果回调函数是function(response, error){...} 怎么办?
【问题讨论】:
-
您需要确保这种协调是正确的。 JS 是动态类型的,因此不会为您检查,因此您需要确保正确使用任何 API。因此,例如,如果您使用 3rd 方 API,并且它接收回调来处理错误,那么您有责任阅读文档并确切知道应该为回调传递什么。并且该 API 的创建者需要确保仅以文档中描述的方式调用回调。
-
好的,非常感谢眯眼。所以基本上它可能会根据 API 发生变化,有些可能会在第一个参数上传递错误,而在第二个参数上传递其他一些错误。在 Node 中,他们同意将第一个参数上的错误作为标准传递。
-
没错。因为没有静态类型检查,所以 API 文档非常重要。负责任的开发团队将彻底记录其 API 的行为,并保证记录的行为不会改变。当团队决定需要进行重大更改时,他们会在引入更改之前发出一段时间的弃用通知。所以是的,您需要编写代码来遵循您正在使用的 API。
标签: javascript jquery error-handling asynccallback