web-dev-qa-db-fra.com

Renvoie plusieurs variables sur async / wait

Je me demandais s'il y avait un moyen d'obtenir la deuxième valeur resolve (test2) sans retourner de tableaux ou d'objets JavaScript.

function testFunction() {
  return new Promise(function(resolve, reject) {
    resolve("test1", "test2");
  });
}

async function run() {
  var response = await testFunction();
  console.log(response); // test1
}

run();
12
Mark Nijboer

Vous ne pouvez transmettre qu'un seul élément. Mais à partir de ES6 il existe une bonne fonctionnalité appelée Array Destructuring .

Retournez un tableau et vous pouvez laisser l'affectation des propriétés sous le capot.

function testFunction() {
    return new Promise(function(resolve, reject) {
               resolve([ "test1", "test2"] );
           });
}

async function run() {

  const [firstRes, secondRes] = await testFunction();
  
  console.log(firstRes, secondRes);

}

run();
21
Suren Srapyan