Ho una promessa $.ajax
e voglio verificare se la mia risposta (sintatticamente valida) contiene un errore, attivando in questo caso lo stato rifiutato.Lancio di un errore nell'oggetto differito di jQuery
Ho lavorato con la mia libreria di promessa che tratta facilmente tali compiti. Non mi piace l'implementazione Promise (cache) di jQuery con il suo Deferred
object e potrebbe aver trascurato qualcosa, perché raramente la uso. Credo che la strada da percorrere è solo utilizzando .then()
, che sembra essere piuttosto complicata:
return $.ajax(...).then(function success(response) {
var problem = hasError(response);
if (problem) {
var error = new $.Deferred;
error.reject(problem);
return error;
} else
return response;
});
Ciò dovrebbe restituire una promessa che viene rifiutata in caso di errori di rete o problemi con la risposta. Ma la restituzione di un rinvio rifiutato è davvero la [solo | migliore | più corta] strada da percorrere?
Avrei anche appriciato l'aiuto su come gestire tali "gestori di risposta di errore" nelle opzioni ajax, non sono riuscito a trovare una buona documentazione su di essi.
Disclaimer: No, non posso modificare le risposte del server. Il metodo di rilevamento dei problemi è sincrono. Non voglio usare altre librerie, sono particolarmente interessato al modo in cui jQuery risolve questo problema.
OK, con '.then()' Volevo dire la cosa che '.pipe()' fa in jQuery :-( – Bergi
a partire da Jquery 1.8 pipe === then – Plynx
Sì, per fortuna hanno ottenuto almeno quello corretto – Bergi