angularJS中的promise
promise对象解析
var ngApp = angular.module('ngApp', []);
// $q为内置服务
ngApp.factory('UserInfoService', ['http','$q', function($http, $q) {
return {
query: function() {
var defer = $q.defer(); //声明延后执行
$http({method: 'GET', url: 'data/students.json'})
.success(function(data, status, headers,config) {
defer.resolve(data); //声明执行成功
console.log('UserInfoService success');
})
.error(function(data, status, headers, config) {
defer.reject(); // 声明执行失败
});
return defer.promise; //返回承诺,返回获取数据的API
}
}
}]);
ngApp.contrtoller('MainController', ['$scope','UserInfoService', function($scope, UserInfoService) {
var promise = UserInfoService.query(); //同步调用,获取承诺接口
promise.then(function(data) {
$scope.user = data; //调用承诺接口resolve()
console.log('MainController..');
}).catch(function(data) {
$scope.user = {error: '数据不存在'}; //调用承诺接口reject()
})
}])
-
promise是一种由的方式处理值的方法,是对象,代表了一个函数最终可能的返回值或者抛出的异常。
-
promise可以使用链式编程
比如:
Service.then(function(data) {
// 在这里一定要用 return 返回
}).then(functon(data) {
}).catch(function(data){
})
浙公网安备 33010602011771号