0
votes

ASYNC Appel à fonctionner avec plusieurs retours

une fonction asynche que je traite, renvoie plusieurs valeurs dans le tableau xxx pré>

en appelant cette fonction, je constate que c'est pas em> possible pour accéder directement à une personne. Valeurs de retour dans une syntaxe: p> xxx pré>

Le seul moyen (connu à moi jusqu'à présent) il fonctionne, est de le casser: P>

result = await funcName(arg)
result1 = result[0]
result2 = result[1]


0 commentaires

3 Réponses :


1
votes
const [result1 ,result2]= await funcName(arg)

1 commentaires

Déconstruire ...



1
votes

Vous pouvez utiliser Array Destructuring :

const [val1, val2] = await funcName(arg);


0 commentaires

1
votes

La syntaxe de l'opérateur code> attendre code> est xxx pré>

ce qui signifie que l'expression totale em> sera évaluée avant de remettre à attendre code>. Voici une ventilation de ce qui se passe lorsque vous avez attendre funcname (arg) [0] code> p>

  1. funcname (arg) code> retourne une promesse. p> li>

  2. [0] code> est la notation des supports carrés utilisées sur em> la promesse. Donc, il s'agit de la propriété 0 code> de l'objet de promesse. P> li>

  3. Comme il n'y a pas de propriété de ce type, le résultat de l'expression est non défini code>. p> li>

  4. attendre code> est appelé sur non défini code>. Comme ce n'est pas une promesse, il est traité comme si un promesse.Resolve (indéfini) code> et donc il n'y a rien à attendre pour terminer. P> li>

  5. L'exécution de code continue avant que l'objet de promesse réel de l'étape 1. strong> est terminé. p> li> ol>

    Vous pouvez forcer attendre code> pour examiner la promesse retournée, si vous entourez la partie correcte de l'expression entre parenthèses ou pour l'utiliser uniquement sur l'expression qui retourne une promesse: p>

    p>

    const simpleAsync = async function () {
      return ["one", "two"];
    }
    
    async function main() {
      const [a, b] = await simpleAsync();
    
      console.log("a:", a);
      console.log("b:", b);
    }
    
    main();


0 commentaires