2016-11-23 63 views
2

我有这个代码在一个服务中,它适用于我。据我所知,$http.get()返回一个承诺,承诺异步执行,所以为什么我需要使用deffered.resolve(res.data)返回我的服务中的数据。非常感谢。

data.posts = function(page, perPage, format, orderBy) { 
     var deffered = $q.defer(); 
     $http.get(hostName, { 
      params: { 
       'page': page, 
       'per_page': perPage, 
       'filter[post_format]=': format, 
       'filter[orderby]=': orderBy, 
       'order': 'desc' 
      } 
     }).then(function(res) { 
      deffered.resolve(res.data); 
     }) 
     return deffered.promise; 
    } 
+0

不使用它。如果XHR GET发生错误,延期承诺将挂起。 – georgeawg

回答

0

如果真的在服务中,延期不需要。服务中的方法从上面的$ http请求返回承诺。

function exampleService($http) { 
    var data = this; 
    data.post = function(page, perPage, format, orderBy) { 
     return $http.get(hostName, { 
      params: { 
      'page': page, 
      'per_page': perPage, 
      'filter[post_format]=': format, 
      'filter[orderby]=': orderBy, 
      'order': 'desc' 
      } 
     }).then(function(res) { 
      //do stuff with success 
     }) 
     .catch(function(err) { 
      //do stuff with error 
     }) 
     .finally(function() { 
      //optionally use this as well maybe if you had loading type overlay/icon 
     }); 
    }; 
    } 
    //preferred method as it makes methods available before the sevice has been returned 

function exampleService($http) { 
    function post(page, perPage, format, orderBy) { 
     return $http.get(hostName, { 
      params: { 
      'page': page, 
      'per_page': perPage, 
      'filter[post_format]=': format, 
      'filter[orderby]=': orderBy, 
      'order': 'desc' 
      } 
     }).then(function(res) { 
      //do stuff with success 
     }) 
     .catch(function(err) { 
      //do stuff with error 
     }) 
     .finally(function() { 
      //optionally use this as well maybe if you had loading type overlay/icon 
     }); 
    } 
    //revealing module pattern 
    return { 
    post: post, 

    }; 
} 
0

为什么使用它?因为作者不太了解。然而有many reasons not to use it

该代码应阅读

data.posts = function(page, perPage, format, orderBy) { 
    return $http.get(hostName, { 
     params: { 
      'page': page, 
      'per_page': perPage, 
      'filter[post_format]=': format, 
      'filter[orderby]=': orderBy, 
      'order': 'desc' 
     } 
    }).then(function(res) { 
     return res.data; 
    }); 
};