我有一个 associateNewUserToProject 函数,如下所示,创建项目和用户的关联。如果 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函数中创建一个promise并等待异常情况下解决catch-promise?我想在异常情况下解析 deleteUser 服务函数后调用onSave()方法。
答案 0 :(得分:1)
问题是createNewUserFailureHandler
返回一个空函数而不是一个promise。
这样做,它应该可以正常工作:
function createNewUserFailureHandler (user) {
return function (error) {
return UserService.deleteUser(user.userId);
};
}