web-dev-qa-db-ja.com

JSONオブジェクトでのpromiseの変換

サービスから返されたpromiseをコントローラーに変換する際に問題が発生しました。私が欲しいのは、promiseに含まれるデータからJSONオブジェクトの配列を作成することです。これは私がコントローラで受け取るものです: Data received at controller

以下は、そのデータを印刷するために使用される行です。

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

ここで「unmatched」はサービスであり、getData()はその機能です。

ありがとう!

5
VitezKoja

Promiseは、将来的に利用可能になるか、または利用不可能になる値を表します。これは、その最終的な値がunmatched.getData()関数から返されないことを意味します。

unmatched.getData()に実際のプロミスを返させ、そのプロミスが解決したときにアクションを実行する必要があります。

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

あなたが本当にやりたいことは、約束そのものではなく、約束が解決する価値を保存することだと思います。

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

これはプロミスの性質によるものです-プロミスは非同期です。

Promiseオブジェクトは、非同期操作の最終的な完了(または失敗)とその結果の値を表します。

出典: MDNの約束

2
Vladimir Zdenek

非同期の約束:

unmatched
  .getData(sFilter)

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

jSONオブジェクトをpromiseから取得したい場合は、以下のコード行を使用できると思います

response.json()

0
Harikrishnan S