Supposons que j'ai une fonction fancyParse
destinée à recevoir la réponse renvoyée par le serveur et à la transformer en autre chose. Cette fonction se déclenche si la réponse n'a aucun sens, ou si elle possède un drapeau spécial "erreur interne". Je voudrais enchaîner cette fonction dans un appel $.post
pour obtenir un nouveau Deferred
. Cette nouvelle différée échouerait si la requête échoue, ou si fancyParse
se déclenche. Il réussira si la requête réussit et fancyParse
réussit, et, surtout, passera le résultat de fancyParse
à ses rappels réussis.Le moyen le plus simple de post-traiter le résultat d'une requête jQuery ajax?
La solution idéale ressemblerait à quelque chose comme ceci:
$.post('/url', etc).postprocess(fancyParse)
.done(my_done_handler)
.fail(my_fail_handler);
Est-ce quelque chose comme ça déjà, ou dois-je écrire un moi-même postprocess
?
La documentation ne précise pas, mais peut-être vous savez: faire des exceptions dans la fonction de filtre faire que la demande soit traitée comme ayant échoué? –
Désolé, je ne sais pas. Mais pourquoi ne saisissez-vous pas les exceptions, puis appelez le gestionnaire d'erreurs depuis votre post-processeur? – jbasko
Parce qu'il y a plus que d'appeler le gestionnaire d'erreur. J'ai aussi besoin que le 'Deferred' devienne * rejeté *, de sorte que tous les gestionnaires d'erreurs ajoutés après soient également invoqués. –