Rumah >hujung hadapan web >tutorial js >Bagaimana Mengendalikan Respons HTTP Asynchronous dengan betul dalam Perkhidmatan AngularJS?
Memproses Respons HTTP dalam Perkhidmatan
Apabila bekerja dengan AngularJS, adalah perkara biasa untuk memerlukan operasi tak segerak untuk mendapatkan data daripada API sebelah pelayan. Artikel ini akan menerangkan cara memproses respons HTTP dalam perkhidmatan dan mengemas kini paparan dengan sewajarnya.
Dalam kes khusus anda, anda menyebut bahawa pengikatan data tidak berfungsi dengan betul apabila menggunakan $http dan bukannya $timeout. Untuk membetulkan perkara ini, adalah penting untuk memahami bagaimana $http berbeza daripada $timeout.
$http menghantar permintaan tak segerak ke pelayan dan mengembalikan janji. Janji itu mengandungi data respons, yang boleh diakses menggunakan fungsi kemudian. Berikut ialah contoh:
myService.async().then(function(response) { // Update $scope.data here $scope.data = response.data; });
Dalam pengawal anda, anda memanggil myService.async() dan menggunakan fungsinya kemudian untuk mengendalikan respons. Dengan memperuntukkan sifat data respons kepada $scope.data, anda mengemas kini model dan mencetuskan kemas kini paparan yang diperlukan.
Sebagai alternatif, anda boleh menggunakan pendekatan berikut untuk cache permintaan dan mengelak daripada membuatnya beberapa kali:
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; };
Ini memastikan bahawa permintaan HTTP hanya dibuat sekali, walaupun kaedah async dipanggil beberapa kali.
Ingat, $http ialah fungsi tak segerak yang mengembalikan janji, manakala $masa tamat ialah fungsi yang menangguhkan pelaksanaan fungsi untuk bilangan milisaat tertentu. Untuk mengendalikan operasi tak segerak dengan berkesan, adalah penting untuk bekerja dengan janji dan fungsinya pada masa itu.
Atas ialah kandungan terperinci Bagaimana Mengendalikan Respons HTTP Asynchronous dengan betul dalam Perkhidmatan AngularJS?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!