2014-11-07 3 views
0

$ q 서비스를 사용하는 서비스에서 여러 가지 약속이있는 경우가 있습니다. 위치 변경시, 체인 된 약속이 실행되지 않도록 모든 미약 한 약속을 거부하고 싶습니다. 이것이 가능한가?모든 미해결 약속을 거부합니다

어떤 생각이 크게 난 당신이 체인 약속의 집합을 관리 할 수 ​​$ q.all() 메소드를 사용하여 수 있다고 생각

C

+0

에 대한 자세한 내용을 읽어 보시기 바랍니다. 언제든지 약속의 처리를 "일시 중지"할 수 있습니다. – SoluableNonagon

답변

0

당신이하고 싶은 것은 특정 활동에서 약속을 취소하는 것입니다. $ http를 사용하면 활성/보류중인 약속을 취소 할 시간 초과 약속을 전달할 수 있습니다.

배열의 약속을 저장하고 함수 호출을 통해 충족하지 왜

app.factory("movies", function($http, $q){ 

    var getById = function(id){ 
     var canceller = $q.defer(); 

     var cancel = function(reason){ 
      canceller.resolve(reason); 
     }; 

     var promise = 
      $http.get("/api/movies/slow/" + id, { timeout: canceller.promise}) 
       .then(function(response){ 
        return response.data; 
       }); 

     return { 
      promise: promise, 
      cancel: cancel 
     }; 
    }; 

    return { 
     getById: getById 
    }; 

}); 

아래에 당신이 당신이

<button ng-click="cancel(request)">Cancel</button> 

원하는 위치에서 기능을 취소 호출 할 수 있습니다이 here

+0

답변이 도움이 되었습니까? – harishr