HTTP を使用した非同期通信は、多くのアプリケーションで一般的です。この記事では、AngularJS サービス内で $http 応答を効率的に処理および処理する方法について説明します。
投稿者 @Gloopy は、$timeout の代わりに $http を使用するとデータ バインディングが機能しないという問題に遭遇しました。非同期動作をシミュレートします。ビューは受信した JSON 応答で更新されませんでした。
解決策には、Promise とその "then" 関数を使用して、$http リクエストの非同期の性質を処理することが含まれます。内訳は次のとおりです:
1.ファクトリ サービスの実装
angular.factory('myService', function($http) { return { async: function() { // Promise-based $http request var promise = $http.get('test.json').then(function (response) { return response.data; }); return promise; } }; });
ここで、myService は、HTTP リクエストをカプセル化する非同期メソッドから Promise を返します。この Promise は、応答が利用可能になったときにそれを処理するコールバックを (「then」関数経由で) 追加する機能を提供します。
2.コントローラーの実装
angular.controller('MainCtrl', function(myService, $scope) { // Callback function attached to the promise's "then" function myService.async().then(function(data) { $scope.data = data; }); });
コントローラーでは、サービスの非同期メソッドが呼び出され、「then」関数を使用して返された Promise にコールバックがアタッチされます。このコールバックは、HTTP リクエストが完了すると実行され、受信したデータで $scope.data プロパティを更新します。
Promise を使用することで、非同期タスク (HTTP リクエスト) をコードから分離することが可能になります。その結果を処理します (「then」コールバック)。このアプローチにより、データが利用可能になったときに UI が正しく更新され、ビューを適切に更新できるようになります。
以上がPromise は AngularJS サービスにおける HTTP 応答処理の問題をどのように解決できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。