javascript - AngularJS 服务和 promise 最佳实践

标签 javascript angularjs design-patterns promise

我有一个 AngularJS 应用程序,其中有 service 调用 $http 资源并返回我在 Controller 中解析的 promise。这是我正在做的一个示例:

app.service('Blog', function($http, $q) {
  var deferred = $q.defer();
  $http.get('http://blog.com/sampleblog')
    .then(function(res) {
        // data massaging stuffs
      return deferred.resolve(res.data);
    }, function(err) {
        // may be some error message checking and beautifying error message
      return deferred.reject(err);
    });
    // chain if further more HTTP calls
  return deferred.promise;
});

但我也可以简单地执行以下操作:

app.service('Blog', function($http) {
  return $http.get('http://blog.com/sampleblog');
});

然后在 controller 级别进行验证、错误美化、链接 promise 等。

我的问题是:就代码弹性和灵 active 而言,哪个被认为是“最佳实践”(如果有的话)?或者有比这完全不同的更好方法吗?

最佳答案

根据 MVC 背后的概念, Controller 应该决定如何处理 promise 。

服务应该发起 promise 。

app.service('Blog', function($http) {
  return $http.get('http://blog.com/sampleblog');
});

Controller 应该决定在解决时做什么。

$scope.response = Blog;

$scope.response.then(function(response) {
    DataProcessor.processData(response.data)
})
.error(function(error){
    ErrorHandler.handle(error);
})

关于javascript - AngularJS 服务和 promise 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38310178/

相关文章:

javascript - CSV 文件读取、过滤和处理并在 Node.js 中以控制台表形式显示

javascript - 同页面div变化不刷新

javascript - Yelp API、OAuth 和 Angular 与 JSONP 只能工作一次

javascript - 值未更新

java - 在 Java 中,为什么代码块没有关键字,只有大括号

c# - 具有依赖注入(inject)设计的处理程序工厂

parsing - Haskell:模式 3 中的解析错误

javascript - 如何访问 Electron 中的DOM元素?

javascript - angularjs - 在定义范围变量之前调用 ng-repeat

javascript - 调用 JS 变量内的值作为 JS 函数名