ホームページ >ウェブフロントエンド >jsチュートリアル >AngularJS サービスで非同期 HTTP 応答を適切に処理するにはどうすればよいですか?
サービスでの HTTP 応答の処理
AngularJS を使用する場合、サーバー側 API からデータを取得するために非同期操作が必要になるのが一般的です。この記事では、サービスで HTTP 応答を処理し、それに応じてビューを更新する方法について説明します。
あなたの特定のケースでは、$timeout の代わりに $http を使用するとデータ バインディングが正しく機能しないと述べました。これを修正するには、$http と $timeout の違いを理解することが重要です。
$http はサーバーに非同期リクエストを送信し、Promise を返します。その Promise には応答データが含まれており、then 関数を使用してアクセスできます。以下に例を示します。
myService.async().then(function(response) { // Update $scope.data here $scope.data = response.data; });
コントローラーで myService.async() を呼び出し、その then 関数を使用して応答を処理します。応答の data プロパティを $scope.data に割り当てることで、モデルを更新し、必要なビューの更新をトリガーします。
または、次のアプローチを使用してリクエストをキャッシュし、リクエストを複数回実行することを避けることもできます。
var promise; myService.async = function() { if (!promise) { promise = $http.get('test.json').then(function(response) { // Update $scope.data here $scope.data = response.data; }); } return promise; };
これにより、非同期メソッドが複数回呼び出された場合でも、HTTP リクエストは 1 回だけ実行されます。
覚えておいてください。 $http は Promise を返す非同期関数であり、$timeout は指定されたミリ秒数だけ関数の実行を遅らせる関数です。非同期操作を効果的に処理するには、Promise とその then 関数を操作することが不可欠です。
以上がAngularJS サービスで非同期 HTTP 応答を適切に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。