2017-06-20 71 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) {...}