在我们在if
块内执行异步调用的特定情况下,如果else
求值为doSubmit
,true
语句块如何执行?结果是它总是在ERROR_2
评论之后排在最后:
$scope.save = function() {
if (doSubmit) {
var dto = {
'attributes': $scope.fields,
'requestOrigin': $location.absUrl()
};
var req = {
method: 'POST',
url: 'endpoint',
data: dto
};
$http(req).success(function(data, status) {
// SUCCESS
$scope.completed(data);
}).error(function(data, status) {
// ERROR_1
$scope.validationFailed();
});
} else {
// ERROR_2
$scope.validationFailed();
}
}
// Used to provide error messages about input validation
$scope.validationFailed = function(message, id) {
$scope.alerts.push({
type: 'danger',
msg: message || 'error.validation_failed', id: id || 'general'
});
}
我在某个地方读过这个案例,但不记得来源。任何链接或简短的阐述都会有所帮助。
附加1 $ scope.validationFailed
答案 0 :(得分:1)
我的评论作为答案:
可能是执行$http
的{{1}} 错误回调?尝试在错误回调中添加$scope.validationFailed();
。
这可能表示服务器端问题,导致服务器返回状态代码与 200 不同。alert(1);
语句和错误回调最终都执行相同的功能,但它只显示else语句不是正在执行的语句。