【发布时间】:2014-10-25 03:33:26
【问题描述】:
在 AngularJS 中,我有一个 api 请求发出并返回一个 JSON。 JSON 存储为对象data,我使用data.Automation.Status 来检查Status 中的字符串。
有一些 JSON 错误可能会上升(在 http 200 成功并成功返回 json 之后):
- 整个 JSON 可以返回一个空白字符串“”
- 数据 JSON 对象可能存在,但自动化 JSON 对象可能未定义
- 对象
Automation的属性Status可能未定义或为空字符串
来自 python,所有这些可能的情况都可以在 try/except 块中轻松处理。
Try:
do something with JSON
except (blah, blah)
don't error out because JSON object is broken, but do this instead
我看到 Angular 有 $errorHandler 服务,可以使用自定义处理程序进行修改。但我不确定这是否可以以与我正在寻找的鸭子类型相同的方式使用。
如何在 AngularJS 中进行鸭式打字?具体来说,对于上面列表中提到的 JSON 对象错误场景?
我现在如何使用data.Automation.Status:
if (iteration < Configuration.CHECK_ITERATIONS && data.Automation.Status !== "FAILED") {
iteration++;
return $timeout((function() {
return newStatusEvent(eventId, url, deferred, iteration);
}), Configuration.TIME_ITERATION);
} else {
err = data.Automation.StatusDescription;
return deferred.reject(err);
}
【问题讨论】:
-
与问题无关,但我发现这里使用 $timeout 真的很奇怪:你不应该使用 deferred.resolve() 代替吗?
-
你知道你可以在 JavaScript 中做同样的事情,不是吗?
标签: javascript angularjs error-handling duck-typing