Le problème que je rencontre est un peu difficile à expliquer, et je pourrais obtenir des promesses (angulaires) mal, mais toujours ...
J'essaie de gérer la situation suivante bien. En général, disons que je veux avoir mon Angular dialogService
pour fournir une méthode confirm
, qui renverrait une promesse résolue en cliquant sur le bouton yes
, cela signifie que la confirmation a effectivement réussi. Cependant, je veux que le dialogue reste ouvert jusqu'à ce que l'opération interne async
- qui serait exécutée sur la confirmation yes
- se termine. Et si ça se termine avec succès, la boîte de dialogue devrait se fermer, sinon rester ouverte.
Dans le code qui serait (parfaitement) qui ressemble à ceci:
code externe:
dialogService.confirm('title', 'message').then =>
return myLongLastingOperationReturningPromise()
quelque chose de la mise en œuvre de la méthode confirm
comme ceci:
def = $q.defer()
dialog = ngDialog.open(...)
// closePromise or any other custom local promise
dialog.closePromise.then =>
// this is fake, but how can I achieve this?
result = def.resolve('closeRequest');
if(typeof result.then == 'function') {
result.then =>
// continue closing the dialog
} else if (result === false) {
// just do nothing
} else {
// closing the dialog
}
en d'autres termes, est-il possible d'obtenir le résultat de la dernière méthode then
dans la chaîne de promesses sur/après l'appel resolve
?
Salut, avez-vous vérifié cette réponse? –