AngularJS $ http.get发送两次相同的xhr请求

时间:2017-09-13 10:48:08

标签: javascript angularjs ajax angular-ui-router

在我的应用中,我正在使用Angularjs-gulp-browserify-boilerplate

在我的服务中,我有下一个代码:

function ResourceService($http, AppSettings) {
    'ngInject';

    const service = {};

    service.getResource = function(params) {
        console.log('Get resource')
        return new Promise((resolve, reject) => {
            $http.get(AppSettings.apiUrl + 'v1/resorce')).then((resp) => {                
                resolve(resp);
            }).catch((err, status) => {
                reject(err, status);
            });
        });
    };

在控制器中:

function ResourceCtrl(BidService) {
    'ngInject';

    // ViewModel
    const vm = this;
    ResourceService.getResource().then((res) => {        
         vm.items = res.data;
    });

}
export default {
    name: 'ResourceCtrl',
    fn: ResourceCtrl
};

在开发控制台中: Result of call getResource

如何防止查询重复?

1 个答案:

答案 0 :(得分:1)

默认情况下$http会返回一个承诺。所以你不需要再次创建一个承诺来解决它。只需从服务返回请求并解决来自控制器的承诺。

 service.getResource = function(params) {
        console.log('Get resource')
        return $http.get(AppSettings.apiUrl + 'v1/resorce'))
 };

控制器

ResourceService.getResource()
  .then((res) => {        
         vm.items = res.data;
  }).catch((res) => {
    console.log(res.data)
  });