だから私はこれに似たオブジェクトの配列を持っている:非同期プログラミング - オブジェクトの配列をループし、APIからデータをフェッチして各オブジェクトにプロパティを変更する方法は?
[ { id: 123, info: 'text', number: 0 }, ... ]
私は、オブジェクトのIDを取り、それに関連した数を返すAPIを持っています。 JavaScriptを使用するフロントエンドアプリケーションでは、配列内の各オブジェクトを繰り返し処理し、そのNumberプロパティにこのAPIのデータを設定します。
私はAngularJSを使用していますが、これは私は、各オブジェクトに関連付けられた数フェッチ書いた関数である。
$scope.getNumber = function(id) {
$http.get('/api/getnumber/' + id)
.success(function(data) {
console.log(data.goings);
return data.number;
});
}
この機能が動作します。私の問題は、配列の各オブジェクトの数値プロパティを更新する方法がわかりません。私はそれをループしようとしましたが、.get()
がデータを取得する前にループが実行されるので、これは機能しません。また、次のコードをhtmlで試してみました:
<div ng-repeat="obj in data">
{{ getNumber(obj.id) || 0 }}
</div>
しかし、これは私のブラウザをクラッシュさせる無限ループを作成します。私はいくつかの検索を試みましたが、私は匹敵するケースを見つけるのが難しいです。どうすればこれを達成できますか?
ゲッターは非同期にすることはできません。表示する値を設定するには、非同期コールバックが必要です。 – dandavis
[非同期呼び出しからの応答を返すにはどうすればいいですか?](http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) –
データを最初に戻す。次に、モデルのプロパティを設定します。 – ManoDestra