当前位置:  开发笔记 > 后端 > 正文

angularjs - 可以承诺超时吗?

如何解决《angularjs-可以承诺超时吗?》经验,为你挑选了0个好方法。

使用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;
}

这是promise返回的控制器:

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

由于一些简单的测试记录,我知道呼叫到达服务器.但对我来说奇怪的是开发控制台表明连接始终"停滞"并且从未首先到达服务器.

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

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有