2017-06-20 63 views
0

承諾在預輸入的情況下,我取消了以前的電話的聯繫人,還沒有回來,一個新的呼叫已經取得,使用下面的代碼:取消有消息

function($http, $window, $q, $timeout){ 

     var suggestions = []; 
     var cancel = $q.defer(); 

     return { 

      getSuggestions : function(inputText){ 

       var deferred =$q.defer(); 
       var promise = deferred.promise; 

       cancel.resolve('request cancelled'); 
       cancel = $q.defer(); 
       var baseUrl = "http://localhost:8080/PackagingTest/hello"; 
       var params = { 
        query : inputText, 
        suggestionsSize : 10 
       } 

       $http.get(baseUrl, {params : params, timeout : cancel.promise}).then(
        function(response){ 
         suggestions = repsonse; 
         deferred.resolve(suggestions); 
        }, function(error){ 

         //check if cancelled and log the error message 
         if(){ 
           console.log(someErrorMsg);//should log 'request cancelled' 
         } 
         console.log(error); 
         deferred.reject(error); 
        }); 

       return promise; 
      } 

     } 
    } 

這將取消以前的請求每次都有新的請求。但我無法獲取取消的狀態消息。 $ http錯誤處理程序調用data: null, status: -1, config: Object, statusText: "", headers: function,在那裏我找不到任何屬性與我的文本。我做錯了,還是在請求被中止時沒有辦法附加消息?

+0

我沒有看到你在哪裏取消先前的呼叫。顯示該代碼。 –

+0

看起來像是在這裏修復的:https://github.com/angular/angular.js/issues/15924 – gaurav5430

回答

0

實際上沒有辦法將數據傳遞給catch處理程序abort。下面是onabort回調,即角內部使用:

var requestError = function() { 
    // The response is always empty 
    // See https://xhr.spec.whatwg.org/#request-error-steps and https://fetch.spec.whatwg.org/#concept-network-error 
    completeRequest(callback, -1, null, null, ''); 
    }; 

completeRequest的定義是:

function completeRequest(callback, status, response, headersString, statusText) {...}