AngularJS $ http ajax请求不是异步的,导致页面挂起

los*_*ket 8 asynchronous angularjs

我有一个服务,我从服务器拉数据.当我单击按钮通过此服务向服务器发送请求时,窗口会冻结,直到我收到服务器的响应.有什么办法可以让这个请求异步吗?

这是我的服务.

app.factory('service', function($http) {
  return {
    getLogData : function(startTime,endTime){
      return $http({
        url:     baseURL + 'getLogData',
        method:  'GET',
        async:   true,
        cache:   false,
        headers: {'Accept': 'application/json', 'Pragma': 'no-cache'},
        params:  {'startTime': startTime , 'endTime': endTime}
      });
    }
  };
)};
Run Code Online (Sandbox Code Playgroud)

HTML.

<button ng-click="getData()">Refresh</button>
<img src="pending.gif" ng-show="dataPending" />
Run Code Online (Sandbox Code Playgroud)

$scope.getData = function(){
  service.getLogData().success(function(data){
    //process data
  }).error(function(e){
    //show error message
  });
}
Run Code Online (Sandbox Code Playgroud)

Nat*_*son 13

虽然有一些关于你的方法的优点和缺点的争论,我认为问题在这里得到解答:AJAX调用冻结浏览器一段时间它得到响应并执行成功

为了测试这实际上是否是问题的一部分,假设一个响应并静态地提供它.我使用Fiddler或WireShark来获取响应,然后保存到像testService.json这样的文件中.XHR及其所有各种衍生产品(如$ HTTP $ .ajax)将其视为服务,尽管标头可能略有不同.