Non interceptée (promesse) d'annuler à l'aide de SweetAlert2
comment puis-je échapper correctement le bouton annuler, sans jeter une erreur lors de l'utilisation de promesses? Mon code déclenche une alerte de confirmation avec un case. le code s'exécute comme il se doit à l'utilisateur, mais il déclenche une erreur dans la fenêtre de la console:
Non interceptée (promesse) d'annuler
//validation logic all passes...Now proceed to...
else
{
//determine and parse Discounts
var myLookup = document.getElementsByName("myLookup")[0].value;
$.post( "findthem.php", {myLookup: myLookup })
.done(function(json_data){
var theResponse1 = $.parseJSON(json_data);
myDiscountRate = theResponse1['ourDiscountFound'];
}).then( function(callback){
priceRate = priceRate * (1 - (.01 * myDiscountRate));
newRate = priceRate.toFixed(2);
}
swal({
title: "Confirm",
input: 'checkbox',
inputValue: 0,
type: "warning",
inputPlaceholder: 'I agree to <a href="#blahblahMore"></a> Your new Rate is :'+newRate,
showCancelButton: true,
confirmButtonText: 'Confirm',
showLoaderOnConfirm: true,
preConfirm: function(result) {
return new Promise(function(resolve, reject) {
if (result) {
$.post("my.php", {
Data: data
})
.done(
function(json_data) {
var data_array = $.parseJSON(json_data);
var moreDetails = '';
var resulting = 'error';
var details = "Transaction Declined"
if (data_array["trxApproved"] == true) {
resulting = 'success';
details = "Confirmed"
moreDetails = "<br>Approved<b>" + data_array["approved"] + "</b>" +
"<br>Details Code: <b>" + data_array["detailsCode"] + "</b>";
}
swal({
type: resulting,
title: details,
html: "<h1>Details: </h1>" + data_array["messagetext"] + moreDetails
});
}
);
resolve();
} else {
reject('You must agree to our Terms & Conditions ');
}
});
},
allowOutsideClick: false
}).then(function(json_data) {
})
});
Conseil: éviter les la Promesse du constructeur antipattern.
Pouvez vous s'il vous plaît indenter ton code correctement? Je ne peux pas discerner où toutes les fonctions de la fin.
Merci @guest271314 pour l'indentation. Il semble qu'il y ait une fermeture
J'ai essayé d'ajouter dans le code, mais ne savent pas comment le faire sans surcharger les choses, j'ai besoin de la promesse il y a à gérer ma case logic avant de pousser mon formulaire de données pour le traitement des
oui, je suis en utilisant limonte.github.io/sweetalert2, je n'arrive pas à trouver dans la doc de traiter les "annuler" sur une confirmation à l'aide de promesses
Pouvez vous s'il vous plaît indenter ton code correctement? Je ne peux pas discerner où toutes les fonctions de la fin.
Merci @guest271314 pour l'indentation. Il semble qu'il y ait une fermeture
})
trop. Pouvez-vous s'il vous plaît poster ton code complet?J'ai essayé d'ajouter dans le code, mais ne savent pas comment le faire sans surcharger les choses, j'ai besoin de la promesse il y a à gérer ma case logic avant de pousser mon formulaire de données pour le traitement des
oui, je suis en utilisant limonte.github.io/sweetalert2, je n'arrive pas à trouver dans la doc de traiter les "annuler" sur une confirmation à l'aide de promesses
OriginalL'auteur Frankenmint | 2016-09-04
Vous devez vous connecter pour publier un commentaire.
Mise à jour (Janvier 2017): Ce problème a été corrigé dans la v7: v7 guide de mise à niveau ↗
Vous avez besoin d'ajouter un rejet de gestionnaire de la Promesse. Alternativement, vous pouvez utiliser
.catch(swal.noop)
comme un moyen rapide de simplement supprimer les erreurs:PS. le package que vous utilisez est appelé SweetAlert2, pas SweetAlert. Dans le futur questions, veuillez le mentionner afin que vous pouvez obtenir plus de réponses pertinentes.
.then
à.done
a fait le tourVous êtes le bienvenu. Je vous remercie pour l'aide swal2!
Euh,
done
est un nom horrible pour cette méthode, il aurait été appeléignoreDismissals
ou quelque chose comme ça (en supposant que les licenciements sont la seule cause du refus de la promesse). Ledone
méthode n'est tout le contraire de jeter non gérée rejets dans le contexte mondial - dans leQ
promesse de la bibliothèque et bien d'autres inspirées par elle.href="https://github.com/limonte/sweetalert2/issues/324" >a été remplacé par
.catch(swal.noop)
, je vous remercie pour votre avis.OriginalL'auteur Limon Monte
SweetAlert2 rejette le résultat promesse lorsque la pression du bouton annuler. Vous pouvez poignée:
Si vous n'avez pas besoin de faire quoi que ce soit avec la
json_data
, vous pouvez également utiliser lecatch
méthode.SweetAlert2 n'est pas de rejet de promesses par défaut à partir de v7: github.com/sweetalert2/sweetalert2/releases/tag/v7.0.0
OriginalL'auteur Bergi
new Promise(function(resolve, reject) {
n'est pas nécessaire.$.post()
retourne un jQuery promesse de l'objet.Solution Possible substituts
Promise.reject()
pournew Promise()
constructeur; retiré.then()
qui a été placé comme une option de premierswal()
appel; modèle semble s'attendre à unePromise
être retourné à partir depreConfirm
, mais pas certain de ce que la valeur devrait être retourné à partir de.done()
autres quejson_data
.Comment est-ce à résoudre le problème de la non interceptée rejet?
Votre dernière phrase devrait probablement être un commentaire, pas une réponse.
Concernant les "
// return ?
": Non, vous ne pouvez pasreturn
à partir d'undone
de rappel. Si c'était unthen
rappel il peut faire sens.Vous avez demandé une "downvote description", donc je vous l'ai expliqué. Les réponses devraient être autonomes, ils ne sont pas un moyen de communication (comme les commentaires). Ils doivent répondre à la question à partir de la première version diffusée. J'ai senti ton post ne contient pas de solution au problème, j'ai donc utilisé le "pas utile".
OriginalL'auteur guest271314
vous aurez besoin pour attraper l'action pour annuler
OriginalL'auteur Adeojo Emmanuel IMM