Javascript clearInterval不使用setInterval
我对下面的代码有问题。 基本上我实现了一个轮询机制,但是当它应该停止轮询时,它只是继续轮询。轮询无限 有没有其他办法迫使它停止 函数SearchPoll只调用一次Javascript clearInterval不使用setInterval,javascript,timer,setinterval,clearinterval,Javascript,Timer,Setinterval,Clearinterval,我对下面的代码有问题。 基本上我实现了一个轮询机制,但是当它应该停止轮询时,它只是继续轮询。轮询无限 有没有其他办法迫使它停止 函数SearchPoll只调用一次 function SearchPoll(){ var i = setInterval(function () { var url = "Search.aspx?polling=true"; $.ajax( { url: ur
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);
}
这把小提琴似乎工作正常。。。
如果要终止所有请求,需要使用从$.ajax返回的XMLHTTPRequest对象。以下是一份:
函数搜索池(){
var xhrArray=[],
interval=setInterval(函数(){
var url=“Search.aspx?polling=true”;
xhraray.push($.ajax({
url:url,
成功:函数(数据){
对于(变量i=0;i
您是否确认您正在运行一个调用clearInterval
的代码块?请务必执行2.,窗口。
不应明确写入其中,也适用于clearInterval
。风格也很重要。:-)好吧,我发现它是有效的,但它不会立即停止池。。在它停下来之前,会有两个额外的游泳池。。但为什么呢?是否应该在调用clearInterval时立即停止?或者是线程问题。。我的应用程序是多线程的,所以我看到的可能只是返回线程的调用?它是轮询,而不是池。池化意味着创建一个池,这应该是什么?发送多个请求直到其中一个返回?这有什么意义?为什么要发送多个请求?
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();