javascript/jquery设置定时器并且在闭包中停止 要怎么弄?
比如下面varb=0;functiona(p){b++;console.log(b);if(b>5){clearInterval(p);}}varp=setInterva...
比如下面
var b=0;
function a(p){
b++;
console.log(b);
if(b>5){
clearInterval(p);
}
}
var p=setInterval(function(){
a(p)
},300);
我必须设置一个变量p来获取setInterval才能停止 有没有办法只要满足b>5 在闭包中设置停止 减少设置一个变量? 展开
var b=0;
function a(p){
b++;
console.log(b);
if(b>5){
clearInterval(p);
}
}
var p=setInterval(function(){
a(p)
},300);
我必须设置一个变量p来获取setInterval才能停止 有没有办法只要满足b>5 在闭包中设置停止 减少设置一个变量? 展开
展开全部
没有办法,因为在关闭时必须指定一个关闭的对象,而这个对象就是p,这跟闭包没有什么关系。
当然,如果一定不想要这个p,也有办法,比如
function a(){
if(b<=5){
b++;
console.log(b);
}
}
其实没有关定时器,只是不再操作而已,对性能有消耗。
又或者可以通过setTimeout定时器递归调用的方法,如下
var b=0;
function a(){
b++;
console.log(b);
if(b<=5){
setTimeout(function(){a()},300);
}
}
setTimeout(function(){
a()
},300);
这样既不需要变量也不消耗资源
当然,如果一定不想要这个p,也有办法,比如
function a(){
if(b<=5){
b++;
console.log(b);
}
}
其实没有关定时器,只是不再操作而已,对性能有消耗。
又或者可以通过setTimeout定时器递归调用的方法,如下
var b=0;
function a(){
b++;
console.log(b);
if(b<=5){
setTimeout(function(){a()},300);
}
}
setTimeout(function(){
a()
},300);
这样既不需要变量也不消耗资源
展开全部
var b=0;
setInterval(function(){
b++;
console.log(b);
if(b>5){
clearInterval(1);
}
},300);
setInterval(function(){
b++;
console.log(b);
if(b>5){
clearInterval(1);
}
},300);
追问
完全无法停止
追答
你有几个setInterval啊,如果就一个setInterval的话用clearInterval(1);是没问题的,主要是明白setInterval的返回值,如果有两个setInterval的话,第二个里就是clearInterval(2);了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以,你直接在b>5里面写就行
追问
问题是怎么写呀 大神。。。 我用clearInterval(this);
无效呀 能不能写一下 小菜鸟在这谢谢你了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询