Retarder une demande JQuery Ajax (jqXHR) avec des rappels effectués / échoués / complets

Lorsque j’utilise le rappel de succès, cette solution fonctionne correctement, mais lorsque j’utilise .done (), cette tentative échoue, comment puis-je réessayer d’envoyer une demande ajax en queue avec les rappels enregistrés .done () .fail () et complete ()?

var requestQueue = []; $.ajaxSetup({ cache: false, beforeSend: function (jqXHR, options) { if(true){ //any condition 'true' just demonstrate requestQueue.push({request:jqXHR,options:options}); //simulate process this queue later for resend the request window.setTimeout(function(){ //this will work with success callbak option, //but with .done() the console.log("Well Done!"); // will fail $.ajax($.extend(requestQueue.pop().options, {global:false, beforeSend:null})); }, 3000) return false; } } }); $.ajax({ url:"TesteChanged.html", error: function(){ console.log("Oh nooooo!"); } }).done(function(){ console.log("Well Done!"); }); 

Je veux mettre en queue un appel ajax (basé sur une condition) pour le renvoyer plus tard, mais lorsqu’un renvoi est envoyé, le rappel d’origine .done () /. Fail () doit être appelé. Avec l’option de rappel ‘success’, ce code fonctionne bien.