我用js写了个轮询,再怎么写可以让它在条件下停止啊,高手来帮帮啊

JavaScript011

我用js写了个轮询,再怎么写可以让它在条件下停止啊,高手来帮帮啊,第1张

用clearInterval,如下

$(document).ready(function(){

c = setInterval(checkIsExist,10000)//每10秒执行一次checkIsExist方法

})

function checkIsExist(){

$.ajax({

type: "POST",

url: "/SecondServlet",

data: "date="+new Date(),

success: function(rtmsg){

if(rtmsg == 'exist'){

$("#download").html("<button onclick=\"window.open('/ArticleServlet')\">下载</button>")

window.clearInterval(c)

}

}

})

}

你这种情况就不应该用轮询,而应该在ajax的回调函数(最好是complete)中再次发起下一次请求,这样就可以保证每次请求都是在上一次请求结束后才发起的,这样就不会造成崩溃了。比如:

function xxx(){

$.ajax({

url:"......",

data:{......},

success:function(data){

//处理返回数据

},

error:function(){

//处理错误

},

complete:function(){    //不管成功与失败,都会发生complete回调

            setTimeout(xxx,5000)    //5秒后再次发起ajax请求

            //也可以直接用 xxx() 可以做到完全实时,但会牺牲一些性能

        }

})

}

特别注意,xxx函数在外部调用时,不能再用 setInterval,而应该是xxx()直接调用!