angularjs - 可以承诺超时吗?

时间:2016-01-06 20:26:14

标签: angularjs

使用Angular的$ q服务时,承诺最终会自行超时吗?

一些背景:我有一个Angular服务向远程服务器发送POST,而远程服务器又查询MySQL数据库并且应该发回结果。有些查询会在一秒钟内返回,而其他查询则需要长达20分钟。问题是,在发送请求后的4分钟后,有一个net :: ERR_EMPTY_RESPONSE(在Chrome开发工具中)。

我们在服务中使用$ q和$ http来促进POST。

queryDB: function(query, page) {
  var deferred = $q.defer();
  $http.post(BASEPATH + "/filter", {data: query, page: page, token: localStorage.auth}, {timeout: 1200000})
  .success(function(response) {
    deferred.resolve(response);
  })
  .error(function(error) {
    deferred.reject(error);
  })

  return deferred.promise;
}

这是承诺返回的控制器:

$scope.queryDB = function(page) {
var query = formatQuery($scope.query);
FilterService.queryDB(query, page).then(function(res) {
  ...
})

由于一些简单的测试记录,我知道呼叫到达服务器。但对我来说奇怪的是开发控制台指示the connection was always "stalled"并且从未到达过服务器。

同样,这只发生在超过4分钟的查询中,否则它会正常运行。所以我最好的猜测是Angular没有等待足够长的时间来解决/拒绝承诺。有没有办法改变这种行为?

0 个答案:

没有答案
相关问题