J'ai une promesse comme ci-dessous: Pourquoi j'ai besoin de résoudre cette promesse avec les données de réponse? p> Que se passe-t-il si je remplace Quelqu'un peut m'aider? Merci. P> p> résolution (objet.assign ({}, réponse.data)); code> ligne par
résolution ("AAAA"); code> ? P>
4 Réponses :
Donc, si vous avez une promesse et que c'est résolu avec Vous pouvez également rejeter la promesse. Cela signifierait que l'appel que vous avez échoué à un moment donné. Analogique à résolution () code> fait exactement ce que dit le nom: il résout la promesse renvoyant la valeur dans l'appel de la fonction. P>
résolve ('aaaaa') code>, cela signifie que votre promesse retournera un état réussi avec sa valeur "AAAAA". P>
résolution () code>,
rejet () code> accepte un paramètre qui devrait être renvoyé par la promesse. P>
Les promesses ont deux arguments, Le paramètre de la fonction de résolution sera renvoyé à la fonction d'invocation, dans le rappel puis em>, tandis que le paramètre de la fonction de rejet peut être trouvé dans le rachat Catch em>. p> par exemple p> Vous pouvez penser que le donc résolution code> et
rejeter code>, utilisé pour envoyer une réponse au code d'invocation.
Si votre promesse a terminé son code sans erreur, alors vous
résolution () code>, en renvoyant la réponse (ce que vous voulez) et si cela échoue, vous
rejeter () < / Code> Il transmet généralement l'erreur en tant que paramètre.
résoudre code> en tant que
retour code> dans un contexte asynchrone , tandis que le
rejet code> est similaire à
jette code> une exception qui sera prise par le code d'invocation. p>
résolution (myvariable) < / code> retournera
myvariable code> au code appelé la fonction de promesse, tandis que
résolution ('AAA') code> retournera toujours "AAA" au code d'invocation. P > p>
Tout ce qu'il fera, c'est appeler le succès Callback Disons que vous passez la fonction de rappel Si cela ne résolve pas - si elle est infructueuse - alors le rappel résoudre code> avec l'argument
"AAAA" code> au lieu de sa valeur d'origine. p>
console.log code>. Si la promesse résout, c'est-à-dire une réussite, le rappel sera appelé avec l'argument transduit (
console.log ("AAAA") code>) p>
rejette code> sera appelé selon votre
.Catch () code> instruction. P>
Quelque chose qui mérite de mentionner est Cela fonctionnera à la place: P> axios.post () code> renvoie déjà un
prometteur code> de sorte que vous n'avez pas besoin de l'envelopper dans une autre promesse.
function delay(duration) {
return new Promise(resolve => setTimeout(resolve, duration));
}
delay(1000).then(() => {
console.log('this code is delayed by 1s');
});
alors votre
promesse code> va résoudre avec
"aaa" code>. Donc
promesse.then (res => console.log (res)) code> donnerait
"aaa" code> au lieu d'un objet
Promise - MDN
Axios.post Code> retourne déjà une promesse. Envelopper ce code dans un
Nouvelle promesse ((résolution, rejet) => {}) code> n'est pas seulement pas nécessaire mais aussi un modèle anti-modèle.
Axios utilise une promesse javascript natale mais peut-être que vous l'enveloppez dans Bluebird Promises, pour vos besoins, uniquement si le code n'est pas écrit par vous. sinon ne le fais pas.
@Az_ utilisant
nouvelle promesse code> est également un modèle anti-modèle si vous souhaitez le convertir d'un type de promesse à un autre.
BlueBirdPromise.Resolve (récursionnativePromise ()) code> serait la bonne façon de faire une conversion.