2013-12-20 42 views
1

我在提出搜索請求考慮此問題:在發送骨幹網中的相同網址的另一個請求之前中止所有活動請求

用戶輸入活動流的「過濾器A」。 集合的URL更改以表示過濾器 collection.fetch被稱爲 用戶快速在「過濾器A」的xhr返回以重置集合之前輸入「過濾器B」。 「過濾器B」從服務器返回,collection.reset被自動調用爲「過濾器B」 「過濾器A」最終返回(在「過濾器B」之後)並將集合重置爲「過濾器A」。 該應用現在處於錯誤狀態。

如何中止上一個掛起的請求。

self.collection = new searchCollection(); 
      self.collection.fetch({ 
       timeout : 60000, 
       type : 'POST', 
       data : { 
        "searchString" : searchKey 
       }, 
       beforeSend : function(xhr) { 

       }, 
       success : function(result) { 

       }, 
       error : function(xhr, status, error) { 

       } 
      }); 

回答

3

保持一個變量來保存獲取請求。

self.fetchXhr = self.collection.fetch(); 

放置任何提取請求之前,檢查變量是否有有效和正在進行的請求。

if(self.fetchXhr != undefined && self.fetchXhr.readyState > 0 && self.fetchXhr.readyState < 4) 
    self.fetchXhr.abort(); 
+0

看起來不錯,但是'readyState <4'是什麼意思? –

+0

瞭解。像這樣使用它也是不錯的主意。謝謝。 –

+0

XMLHttpRequest有5個readyState值:0 - 請求未初始化,1 - 請求已建立,2 - 請求已發送,3 - 請求正在處理中,4 - 請求已完成。 readyState值爲1-3,表示請求是活動的。 –

相關問題