2016-06-10 19 views
1

Ich habe eine associateNewUserToProject Funktion wie folgt, um die eine Assoziation des Projekts und des Benutzers zu erstellen. Ich muss den Benutzer löschen, wenn es eine Ausnahme im addUserToProject Service gibt.warten auf Versprechen in Fangen des Aufrufs Versprechen gelöst werden

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

Dies funktioniert ohne Probleme. Aber ich möchte warten auf die deleteUser Service zu lösen, die ich nicht herausfinden kann.

Wie kann ich ein Versprechen in der Fangfunktion erstellen und darauf warten, dass das Catch-Versprechen im Ausnahmefall gelöst wird? Ich möchte onSave() -Methode nach der deleteUser Service-Funktion im Ausnahmefall gelöst aufrufen.

+0

Könnten Sie teilen 'UserService.deleteUser()' Code? Ist es ein Versprechen? –

+0

@MartinGottweis Ich habe die Frage mit der Service-Funktion _deleteUser_ aktualisiert. Es nutzt die $ http – user1722043

Antwort

1

Problem ist die createNewUserFailureHandler gibt eine leere Funktion nicht ein Versprechen.

tun Genau dies und es sollte funktionieren:

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

vielen Dank !!! Ich habe diese Rückmeldung vergessen !!! Jetzt funktioniert es wie erwartet! :) – user1722043

+0

Gerne helfen. Viel Glück mit Ihrem Projekt. –

Verwandte Themen