2016-09-01 4 views
0

ID를 내 서버 js에 게시하고 약 1 분 이상 걸리는 작업을 실행합니다. 응답 및 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; 

     }; 
+0

약속 사용은 연결 시간 제한 문제를 해결하지 못합니다. – Bergi

+0

"다시 게시 하시겠습니까?"라는 의미는 무엇입니까? 그리고 개발자 도구의 네트워크 패널을 사용하여 연결 시간이 초과되었다고 생각하지 말고 * 확인하십시오. 요청과 같은 – Bergi

+0

이 다시 전송됩니다. 요청을 즉시 보낸 후 응답 할 때 제대로 실행을 계속하지만, 실행중인 내용에 따라 내 클라이언트에 대한 피드백을 원합니다. – MasterWizard

답변

0

가 $의 HTTP 구성 매개 변수에 시간 제한을 설정하십시오 (여기서는 내가 3 분으로 설정).

$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의 설정에 대한 추가 정보를 원하시면, the docs를 참조하십시오. 구성 사용에 대한 This section은 특히 흥미 롭습니다.

0

코드에서 약속 대기 3000 밀리 후

  1. 코드 몇 가지 버그가 있습니다 다음 포스트가 실행됩니다.
  2. 약속은 게시물 reqeuest가 전송 된 후에 완만하게 반환되며 게시물이 반환 될 때까지 기다리지 않습니다.

요청에 대해 60 초 대기하면 문제가 발생하지 않습니다. 그래서 당신의 브라우저 (선호 크롬 ;-)) 네트워크 로그를보고 정말로 시간 초과인지 또는 서버로부터 어떤 종류의 오류 코드가 있는지를 확인합니다.

+0

사실 나는 체크하고, 그것이 보류 중으로 남아 있고, 다시 실행한다는 것을 알았다. 내가 긴 작업의 실행 전에 응답하면 코드가 완벽하게 실행되는 경우 문제가있는 것 같아요. 실행 후 다시 응답 할 때까지 기다리는 것입니다. – MasterWizard

관련 문제