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 在闭包中设置停止 减少设置一个变量?
展开
 我来答
fhq198604
推荐于2016-10-31 · TA获得超过805个赞
知道小有建树答主
回答量:236
采纳率:100%
帮助的人:365万
展开全部
没有办法,因为在关闭时必须指定一个关闭的对象,而这个对象就是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);
这样既不需要变量也不消耗资源
博学弈问
2015-07-17 · 超过15用户采纳过TA的回答
知道答主
回答量:83
采纳率:0%
帮助的人:33.1万
展开全部
var b=0;
setInterval(function(){
b++;
console.log(b);
if(b>5){
clearInterval(1);
}
},300);
追问
完全无法停止
追答
你有几个setInterval啊,如果就一个setInterval的话用clearInterval(1);是没问题的,主要是明白setInterval的返回值,如果有两个setInterval的话,第二个里就是clearInterval(2);了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zouqi8023fuyan
2015-07-17 · TA获得超过199个赞
知道小有建树答主
回答量:444
采纳率:75%
帮助的人:141万
展开全部
可以,你直接在b>5里面写就行
追问
问题是怎么写呀 大神。。。 我用clearInterval(this);
无效呀 能不能写一下 小菜鸟在这谢谢你了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式