Komunikasi tak segerak menggunakan HTTP adalah perkara biasa dalam banyak aplikasi. Artikel ini membincangkan cara untuk memproses dan mengendalikan respons $http dengan berkesan dalam perkhidmatan AngularJS.
Poster @Gloopy menghadapi isu di mana pengikatan data tidak berfungsi apabila menggunakan $http dan bukannya $timeout untuk mensimulasikan tingkah laku tak segerak. Pandangan mereka tidak dikemas kini dengan respons JSON yang diterima.
Penyelesaian melibatkan penggunaan janji dan fungsi "kemudian" mereka untuk mengendalikan sifat tak segerak permintaan $http. Berikut ialah pecahan:
1. Pelaksanaan Perkhidmatan Kilang
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; } }; });
Di sini, myService mengembalikan janji daripada kaedah asyncnya yang merangkum permintaan HTTP. Janji ini menyediakan keupayaan untuk menambah panggilan balik (melalui fungsi "kemudian") untuk mengendalikan respons apabila ia tersedia.
2. Pelaksanaan Pengawal
angular.controller('MainCtrl', function(myService, $scope) { // Callback function attached to the promise's "then" function myService.async().then(function(data) { $scope.data = data; }); });
Dalam pengawal, kaedah async perkhidmatan digunakan dan panggilan balik dilampirkan pada janji yang dikembalikan menggunakan fungsi "kemudian". Panggilan balik ini dilaksanakan apabila permintaan HTTP selesai dan ia mengemas kini sifat $scope.data dengan data yang diterima.
Dengan menggunakan janji, tugas tak segerak (permintaan HTTP) boleh dipisahkan daripada kod tersebut. yang mengendalikan keputusannya (panggilan balik "kemudian"). Pendekatan ini memastikan bahawa UI dikemas kini dengan betul apabila data tersedia, membolehkan paparan dimuat semula dengan betul.
Atas ialah kandungan terperinci Bagaimanakah Janji Boleh Menyelesaikan Isu Pengendalian Respons HTTP dalam Perkhidmatan AngularJS?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!