我有一个associate新用户对项目功能如下,创建一个项目和用户的关联。如果在addUserToProject服务中存在任何异常,我需要删除该用户。等待承诺解决在致电承诺
function createNewUserFailureHandler (user) {
return function (error) {
UserService.deleteUser(user.userId);
};
}
function associateNewUserToProject(responses, project) {
var promises = [];
for (var i = 0; i < responses.length; i++) {
var failureHandler = createNewUserFailureHandler(responses[i][0].data);
promises.push(ProjectService.addUserToProject(project.projectId, responses[i][0].data)
.catch(failureHandler));
}
$q.all(promises).then(function() {
onSave(responses);
});
}
function deleteUser (userId) {
var request = {
method: 'DELETE',
url: UrlBuilderService.buildApiUrl('user', String(userId))
};
return $http(request);
}
此工作没有任何问题。但我想等待deleteUser服务来解决,这是我无法弄清楚的。
如何在catch函数中创建承诺并等待catch-promise在异常情况下得到解决?我想调用onSave()方法后deleteUser服务函数解析后发生异常。
你能分享'UserService.deleteUser()'代码?这是一个http的承诺吗? –
@MartinGottweis我用_deleteUser_服务函数更新了这个问题。它使用$ http – user1722043