AngularJS $http.get 返回速度不够快

标签 angularjs http

.factory('someFac', function (CONFIG, $injector, $http) {
   return $http.get('url').then(function (response) {
      var temp = response.data.answer;
      var answer = '';
      if(temp == bar){
          answer = barAnswer;
       }
      else if(temp == foo){
          answer = fooAnswer;
      }
      return $injector.get(answer);
   }
}

所以我的问题是,在工厂完成执行之前 $http.get 没有完成获取响应...我应该如何解决这个问题?我在某个地方读到我可以实现 app.config 以将变量注入(inject)提供者中……这可能是一个解决方案吗?

最佳答案

你的工厂/服务应该是维护数据的东西, Controller 应该只使用它(这种方式可以跨不同的 Controller 发生双向绑定(bind))。

.factory('someFac', function ($http) {
    var self = this;
    self.init = function() {
        return $http.get('url').then(function(response) {
            self.data = response.data;
        });
    }
}

现在您的工厂可以在任何地方注入(inject)并维护数据,因此您所有的 Controller 都将实时更新。为确保数据已加载,请确保将 init 放入路由中的解析中。

resolve: {
    someFac: function (someFac) {
        return someFac.init();
    }
}

现在在 Controller 中你可以这样使用它:

.controller('someControleler', function ($scope, someFac) {
    $scope.data = someFac.data;
});

希望这对您有所帮助。

关于AngularJS $http.get 返回速度不够快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32382792/

相关文章:

javascript - Angular 10 |邮寄 |字符串数组追加 FormData

javascript - 仅在 html 中插入图像一次

jquery - 聊天框的 Html SignalR Chat 溢出

c# - 是否可以在同一路由中使用 2 种方法(GET 和 POST)?

google-chrome - Google Chrome 网络开发人员工具 - 大多数网站的标题选项卡中缺少表单数据

django - get vs put http 请求对象

web-services - 什么是 REST API 错误处理最佳实践?

javascript - 链接和按钮未触发

javascript - AngularJS ng-if 问题与 'f' 和 'F'

html - 在 Angular 应用程序中,<a> 中的 href 不会重新加载页面