为什么在 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中文网其他相关文章!