サービスから返されたpromiseをコントローラーに変換する際に問題が発生しました。私が欲しいのは、promiseに含まれるデータからJSONオブジェクトの配列を作成することです。これは私がコントローラで受け取るものです:
以下は、そのデータを印刷するために使用される行です。
console.log("controller unmatched: ", unmatched.getData(sFilter));
ここで「unmatched」はサービスであり、getData()はその機能です。
ありがとう!
Promiseは、将来的に利用可能になるか、または利用不可能になる値を表します。これは、その最終的な値がunmatched.getData()
関数から返されないことを意味します。
unmatched.getData()
に実際のプロミスを返させ、そのプロミスが解決したときにアクションを実行する必要があります。
unmatched.getData(sFilter).then(function(result) {
console.log("controller unmatched: ", result);
});
あなたが本当にやりたいことは、約束そのものではなく、約束が解決する価値を保存することだと思います。
unmatched.getData(sFilter).then(response => {
const json = JSON.stringify(response);
});
これはプロミスの性質によるものです-プロミスは非同期です。
Promiseオブジェクトは、非同期操作の最終的な完了(または失敗)とその結果の値を表します。
出典: MDNの約束
非同期の約束:
unmatched
.getData(sFilter)
// wait for its resolution
.then(data => console.log(JSON.stringify(data))
;
jSONオブジェクトをpromiseから取得したい場合は、以下のコード行を使用できると思います
response.json()