J'essaie de faire une fonction qui retourne une chaîne contenant un jeton JWT, la fonction utilisée dans l'amplificateur renvoie une promesse et je ne peux pas me faire face aux promesses, mais après avoir du mal, j'ai réussi à obtenir mon Fonction Pour obtenir la chaîne dont j'ai besoin de la promesse et l'imprimer à la console, mais lorsque je retourne cette chaîne de la fonction afin que je puisse appeler à partir de divers endroits les données résultantes sont à nouveau une promesse. Aucune idée de ce que je fais mal.
3 Réponses :
edit: Sandbox ici Tout ce dont vous avez besoin est Cette modification je crois. N'oubliez pas que les fonctions Async ne sont que des promesses. Vous devez effectuer des travaux sur le résultat en définissant le résultat à une variable avec un Laissez Data = Await auth.CurrentAuthenticiature (). Ensuite (résultat => résultat) .Ce (données => data.jwtToken) < / Code>, ou simplement faire tout le travail nécessaire dans le
.Chen (données => {data.jwtTokoken //...votre travail ici}) code>. p>
Cela me donne toujours une promesse, c'est si déroutant.
@Mattm Voir ma boite de sable
Si vous avez utilisé attendre à l'intérieur d'une fonction qu'il ne renverra qu'une promesse, quoi que ce soit pour que vous puissiez simplement utiliser puisque vous ne pouvez pas utiliser en dehors d'une fonction asynchrone de la demande de réagissage Il suffit d'utiliser des états tels que la mise à jour de l'état d'application à l'aide de ou si vous voulez vraiment que le composant soit async que juste que d'étudier l'utiliser comme ceci. P> setState () code> dans le
.Chen code> de la promesse retournée. Il n'y a pas de tel besoin de faire la fonction async. p>
let result = null
getToken().then(token => {
result = token
// Now you can use the result variable
console.log(result)
})
Cela l'écrit parfaitement à la console mais comment puis-je obtenir cette chaîne comme une variable? Je pense à quelque chose comme GetToken (). Ensuite (résultat => {Résultat de retour}); Mais cela retourna une promesse à nouveau
J'ai mis à jour la réponse
pense que j'ai fait la victime maintenant grâce à @ Tfarmer4 et @arish Khan. Dans ma tête, je voulais obtenir le jeton comme une variable de chaîne afin que je puisse passer à mes fonctions d'appel de l'API, mais je réalise maintenant que je devrai l'appeler à partir de chaque fonction, donc ci-dessous est mon exemple de solution.
function getToken() { return Auth.currentAuthenticatedUser().then(result => result.signInUserSession).then(result => result.accessToken).then(result => result.jwtToken); } function callAPI () { getToken().then(data => { let token = data; console.log(token); //more lines here such as calling my API using token as the variable of the jwt token } ); };
heureux d'avoir pu aider. J'ai eu du mal avec cela pendant un moment où essayez de comprendre les promesses. Il suffit de mémoriser les modèles associés à chaque approche car vous verrez toutes les différentes syntaxes mélangées dans un projet de développement.
Lorsque les fonctions sont définies comme ASYNC, elles renvoient toujours une promesse
Donc, à quel point puis-je sortir de la promesse de retourner juste ma chaîne?
Yeah Async Fonctions ne sont que des promesses :). Je connais son déroutant au début