等待长时间的执行响应

时间:2016-09-01 08:20:28

标签: javascript angularjs promise httpresponse

我向我的服务器js发布了一个id,它会执行一些可能需要大约一分钟或更长时间的事情。我认为连接等待响应和POST再次超时。我希望客户端或浏览器等到执行完全完成后返回响应,这是长时间执行的结果。

我在网上看过,我看到了一些关于承诺的问题。我用了诺言,但仍然发布了。还有其他解决方案吗?

代码:

      $scope.imageget = function(target) {
          $http.post('/' + 'region/images', {under: id})
                 .then(function(docs)  {
                $scope.results = docs.data.results;
                var responss = docs.data.results;
                var jsonresponse = JSON.parse(responss);
                jobdetails = jsonresponse;
                console.log(jobdetails)
          });

        };

承诺后的守则:

      $scope.imageget = function(target) {
          var deferred= $q.defer();
          $timeout(function(){

          $http.post('/' + 'region/images', {under: id})
                 .then(function(docs)  {
                $scope.results = docs.data.results;
                var responss = docs.data.results;
                var jsonresponse = JSON.parse(responss);
                jobdetails = jsonresponse;
                console.log(jobdetails)
          });
          deferred.resolve();    
              }, 3000);  
          return deferred.promise;

        };

2 个答案:

答案 0 :(得分:0)

尝试在$ http配置参数中设置超时(此处我将其设置为三分钟)。

  $scope.imageget = function(target) {
      $http.post('/' + 'region/images', 
             {under: id}, 
             {timeout: 180000})
             .then(function(docs)  {
            $scope.results = docs.data.results;
            var responss = docs.data.results;
            var jsonresponse = JSON.parse(responss);
            jobdetails = jsonresponse;
            console.log(jobdetails)
      });

    };

有关$ http config的更多信息,请参阅the docs。关于配置使用的This section特别有趣。

答案 1 :(得分:0)

您的代码中存在多个错误

  1. 承诺后的代码等待3000毫秒,然后执行帖子。
  2. 承诺在发送后请求后立即返回,并且不会等到帖子返回。
  3. 请求等待60秒应该不是问题。所以我想看看你的浏览器(最好是Chrome ;-))网络日志并检查它是否真的超时,或者是否从服务器获得某种错误代码。