angularjs - AngularJs 承诺在失败时执行
问题描述
我有以下代码:
CaseFolderResource
.exportByCaseId()
.getWithGenericResponse(
{caseId : request.caseId},
function (result) {
console.log(result);
console.log('in 4')
},
ErrorHandler.handleError
)
.$promise
.then(
function (success) {
console.log(success);
console.log('in 2');
console.log('success');
CaseFolderResource
.getByCaseId()
.getWithGenericResponse(
{caseId : request.caseId},
function (result) {
console.log('nested call');
console.log(result);
}
);
},
ErrorHandler.handleError
);
在console log
我看到in
然后in 2
甚至success
输出失败所以承诺日志:
data
with success:false
.
我在第一个和第二个承诺上得到了 HTTP 500。
编辑:
getWithGenericResponse
是:
getWithGenericResponse: {
method: 'GET',
interceptor: genericResponseInterceptor,
headers: {
'Authorization': function () {
return AuthHolder.getAuthData();
},
'X-Company': function(){
return getCompany();
}
}
},
genericResponseInterceptor
是:
var genericResponseInterceptor = {
response: function (data) {
var response = data.data;
console.log(response);
if (data.status === 401 || data.status === 403) {
reject();
} else if (!response.success && response.errors !== undefined && response.errors !== null) {
response.errors.forEach(function (error) {
console.log(error.code);
if (error.message) {
ToasterService.showTranslatedWarningToasterInstant(error.message);
} else {
ToasterService.showTranslatedWarningToaster('error.' + error.code, {params: error.args});
}
});
}
return response;
},
responseError: function (data) {
if (data.status === 401) {
reject();
} else if (data.status === 403) {
ToasterService.showTranslatedErrorToaster('error.message.403');
} else {
ToasterService.showTranslatedErrorToaster('error.message.default');
}
return data;
}
};
即使我,ErrorHandler.handleError
从第一个请求中删除:结果与上述相同。
编辑:
我可以解决它if (response.data.success)
:
CaseFolderResource.exportByCaseId().getWithGenericResponse({caseId : request.caseId}).$promise
.then(function (response) {
console.log(response.data);
console.log(response.success);
if (response.data.success) {
console.log('in 2');
console.log('success');
CaseFolderResource.getByCaseId().getWithGenericResponse({caseId : request.caseId}, function (result) {
console.log('nested call');
console.log(result);
});
}
});
解决方案
推荐阅读
- flutter - Flutter-web Webview使用多个LocalStorage管理
- sql - SQL (Redshift) 在一个 ID 下连接多行
- javascript - 如何区分纯文本和base64?
- python - 使用 Regex 和 python 解析代理地址
- python - “无法执行子进程子进程'software-properties-gtk'(没有这样的文件或目录)”发生
- java - 如何将 MVVM 与 App/activity 和 AsyncTask 的 UI 组件一起使用
- javascript - 删除父元素和下一个直到元素
- html - 内联块元素中的意外填充
- javascript - 隐藏滚动条并制作自定义滚动条
- java - 从模数和指数重建 RSA 私钥失败