2016-06-10 3 views
1

У меня есть associateNewUserToProject, как показано ниже, чтобы создать ассоциацию проекта и пользователя. Мне нужно удалить пользователя, если есть какое-либо исключение в службе addUserToProject.Ждать обещания, которое должно быть разрешено в catch обещания вызова

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); 
} 

Это работает без проблем. Но я хочу дождаться решения для удаления , которое я не могу понять.

Как я могу создать обещание в функции catch и дождаться разрешения решения catch в случае исключения? Я хочу вызвать метод onSave() после deleteUser функция сервиса разрешена в случае исключения.

+0

Не могли бы вы поделиться 'UserService.deleteUser()' код? Это обещание? –

+0

@MartinGottweis Я обновил вопрос с помощью функции _deleteUser_ service. Он использует $ http – user1722043

ответ

1

Проблема createNewUserFailureHandler возвращает пустую функцию, а не обещание.

Просто сделай это, и он должен работать нормально:

function createNewUserFailureHandler (user) { 
    return function (error) { 
     return UserService.deleteUser(user.userId); 
    }; 
} 
+0

спасибо большое !!! Я пропустил это заявление возвращения !!! Теперь он работает как ожидалось! :) – user1722043

+0

Рад помочь. Удачи с вашим проектом. –

Смежные вопросы