為什麼在AngularJS Promise 鏈中使用回調是有害的
通常建議為AngularJS 服務片段提供回調函數,如程式碼片段如下:
app.controller('tokenCtrl', function($scope, tokenService) { tokenService.getTokens(function callbackFn(tokens) { $scope.tokens = tokens; }); });
但是,不鼓勵這種做法作為反模式。 AngularJS 服務(例如 $http 返回承諾)以及將回調方法附加到其 .then 方法會構成不良的控制反轉。
重構
要修正此問題,請修改程式碼如下:
app.controller('tokenCtrl', function($scope, tokenService) { tokenService.getTokens() .then(function(response) { $scope.tokens = response.data; }); });
服務模組中:
app.factory('tokenService', function($http) { var getTokens = function() { return $http.get('/api/tokens'); }; return { getTokens: getTokens }; });
這次重構消除了回呼函數,透過.then 方法維護了想要的控制流。
重構的理由
原始程式碼中實現的回調:
以上是為什麼回調在 AngularJS Promise 鏈中有害?的詳細內容。更多資訊請關注PHP中文網其他相關文章!