该代码可以按如下方式重构:
app.controller('tokenCtrl', function($scope, tokenService) { tokenService.getTokens.then ( callbackFn(tokens) { $scope.tokens = tokens; });});app.factory('tokenService', function($http) { var getTokens = function() { //return promise return $http.get('/api/tokens').then (function onFulfilled(response) { //return tokens return response.data; } ); }; return { getTokens: getTokens };});通过使服务返回承诺,并使用承诺的
.then方法,可以实现相同的功能,并具有以下好处:
Promise可以保存并用于 链接 。
可以保存承诺并用于避免重复同一
$http
呼叫。错误信息将保留并可以通过该
.catch
方法检索。承诺可以转发给其他客户。



