2011-11-16 94 views
1

我對下面的代碼有問題。 基本上即時實施投票機制,但當它應該停止投票它只是繼續投票。輪詢無限。clearInterval不能與setInterval配合使用

有沒有其他的方法來強制它停止?

函數SearchPoll只被調用一次。

function SearchPoll(){ 
    var i = setInterval(function() 
    { 
     var url = "Search.aspx?polling=true";   
     $.ajax( 
     { 
      url: url, 
      success: function (data) 
      {  
       clearInterval(i); 
      }, 
      error: function() 
      { 
       clearInterval(i); 
      } 
     }); 
    }, 1000); 
} 
+0

你確定你真的在運行一個調用'clearInterval'的代碼塊嗎? –

+0

絕對是2.,'window.'不應該寫在那裏顯式,也''clearInterval'。風格也很重要。 :-) – 2011-11-16 21:44:21

+0

好吧,我發現它的工作原理,但它不會立即停止合併..一些額外的池在它停止之前完成..但爲什麼?不應該在調用clearInterval時立即停止?或者它是一些線程問題..我的應用程序是多線程的,所以也許我看到的只是調用返回的線程? – user750508

回答

0

如果你想殺死你需要使用XMLHttpRequest對象的工作都要求從$就返回。這裏是一個example

function SearchPool(){ 
    var xhrArray = [], 
     interval = setInterval(function() { 
      var url = "Search.aspx?polling=true";   
      xhrArray.push($.ajax({ 
       url: url, 
       success: function (data) {  
        for(var i = 0; i < xhrArray.length; i+= 1) { 
         xhrArray[i].abort(); 
        } 
        clearInterval(interval); 
       }, 
       error: function() { 
        clearInterval(interval); 
       } 
      })); 
     }, 20); 
} 
SearchPool(); 
+0

感謝代碼..堅信值得期待:)! – user750508

相關問題