-1
votes

JavaScript retourne une promesse même s'il imprime une chaîne à la console

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. xxx


3 commentaires

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


3 Réponses :


-1
votes

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}) .


2 commentaires

Cela me donne toujours une promesse, c'est si déroutant.


@Mattm Voir ma boite de sable



-1
votes

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 xxx pré>

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 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>

ou si vous voulez vraiment que le composant soit async que juste que d'étudier code> dans réagit pour gérer les composants qui doivent Fetch les données d'un réseau avant d'être affichée p>

l'utiliser comme ceci. P>

let result = null
getToken().then(token => {
    result = token

    // Now you can use the result variable
    console.log(result)
})


2 commentaires

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



-1
votes

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
    }
  );
};


1 commentaires

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.