Mengapa Menggunakan Panggilan Balik dalam AngularJS Promise Chains Memudaratkan
Ia sering dicadangkan untuk menyediakan fungsi panggil balik kepada perkhidmatan AngularJS, seperti yang dilihat dalam coretan kod di bawah:
app.controller('tokenCtrl', function($scope, tokenService) { tokenService.getTokens(function callbackFn(tokens) { $scope.tokens = tokens; }); });
Walau bagaimanapun, amalan ini tidak digalakkan sebagai Anti-Corak. Perkhidmatan AngularJS seperti janji pengembalian $http dan melampirkan kaedah panggil balik pada kaedah .then mereka membentuk penyongsangan kawalan yang tidak diingini.
Refactoring
Untuk membetulkan isu ini, ubah suai kod seperti berikut:
app.controller('tokenCtrl', function($scope, tokenService) { tokenService.getTokens() .then(function(response) { $scope.tokens = response.data; }); });
Dalam perkhidmatan modul:
app.factory('tokenService', function($http) { var getTokens = function() { return $http.get('/api/tokens'); }; return { getTokens: getTokens }; });
Pemfaktoran semula ini menghapuskan fungsi panggil balik dan mengekalkan aliran kawalan yang diingini melalui kaedah .then.
Justifikasi untuk Pemfaktoran Semula
Panggilan balik seperti yang dilaksanakan dalam kod asal:
Atas ialah kandungan terperinci Mengapa Panggilan Balik Memudaratkan dalam Rantai Janji AngularJS?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!