我有一個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