web-dev-qa-db-fra.com

Convertir la promesse en objet JSON

J'ai un problème pour convertir la promesse retournée par le service au contrôleur. Ce que je veux, c'est créer un tableau d'objets JSON à partir des données contenues dans promesse. Voici ce que je reçois dans le contrôleur: Data received at controller

Voici la ligne utilisée pour imprimer ces données:

console.log("controller unmatched: ", unmatched.getData(sFilter));

Ici, "inégalé" est le service, et getData () est sa fonction.

Merci!

5
VitezKoja

Une promesse représente une valeur qui sera disponible dans le futur ou jamais. Cela signifie que sa valeur éventuelle ne peut pas être retournée par votre fonction unmatched.getData().

Ce que vous devez faire est de faire que unmatched.getData() retourne la promesse réelle et ensuite vous prenez des mesures lorsque cette promesse se résout:

unmatched.getData(sFilter).then(function(result) {
  console.log("controller unmatched: ", result);
});
7
Lennholm

Je crois que ce que vous voulez vraiment faire, c'est économiser une valeur à laquelle la promesse se résout, pas la promesse elle-même.

unmatched.getData(sFilter).then(response => {
    const json = JSON.stringify(response);
});

Cela est dû à la nature des promesses - elles sont asynchrones.

L'objet Promise représente l'achèvement (ou l'échec) éventuel d'une opération asynchrone et sa valeur résultante.

Source: Promesses sur MDN

2
Vladimir Zdenek

Les promesses fonctionnent de manière asynchrone:

unmatched
  .getData(sFilter)

  // wait for its resolution
  .then(data => console.log(JSON.stringify(data))
;
2
Hitmands

si vous voulez obtenir les objets JSON de la promesse, je pense que vous pouvez utiliser la ligne de code ci-dessous

response.json ()

0
Harikrishnan S