看一个类似的问题,在Benjamin Gruenbaum 建议的答案之一中,.always所有承诺都提供了 which (包括来自 的返回值$http.get)。他在 fiddle 上包含了一个有用的代码示例:
HTML:
<div ng-controller="Ctrl">
{{data}}
</div>
JavaScript:
var myApp = angular.module('myApp', []);
var data = {hello:"World!"};
function Ctrl($scope, $http) {
$http.post('/echo/json/', 'json=' + encodeURIComponent(angular.toJson(data)), {
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
}
}).always(function(data) {
alert("HI");
});
}
本杰明指出.always已被.finally. 这是使用.finally最新的 Angular.js 的小提琴。
HTML:
<div ng-controller="MyCtrl">Hello, {{name}}!</div>
JavaScript:
var myApp = angular.module('myApp', []);
myApp.controller('MyCtrl', ['$scope', '$http', function ($scope, $http) {
$scope.name = 'Superhero';
$http.get('/echo/json/').
success(function() {
$scope.name = 'Sidekick';
}).
finally(function() {
alert($scope.name);
});
}]);
(注意这是文档,nfiniteloop对$q 'finally' not working in IE8的回答也可能有用。)