亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

執行清除js定時器操作,定時器清不掉

執行清除js定時器操作,定時器清不掉

现在场景如下:一个for循环里先执行一个异步的ajxa1(方法1),在for循环里下面又会开定时器(settimeout嵌套setinterval两个定时器)再这两个定时器里都会调用ajxa2(方法2)。现在我需要在方法1中的回调success或者error方法中清除与它对应生成的settimeout和setinterrval的定时器(方法1执行没有回调时定时器会一直调用方法2)。我现在的做法是在循环里最后面将定时器id保存在一个数组里的对象下,然后再方法1回调里进行清除,通过console.log可以确定回调里能获取到两个定时器id,并且执行清除操作,但是不知道为什么清除不掉定时器。
查看完整描述

4 回答

?
qq_巴黎的雨打濕東京的街_0

TA貢獻6條經驗 獲得超2個贊

下次問問題二話不說直接上代碼可還行?
從字面上來看

for(){
????ajax1({
????????success:function(){清除兩個定時器}
????})
????setTimeout(function(){setInterval(ajax2,5000)},5000)?//包括取id
????arr.push(兩id)
}

字面上來講大致的結構是這樣吧,那么問題來了;1.for循環里id的名字不能重復(可以省略掉);2.方法一的異步時間和settimeout的時間哪個快(可以調試的時候一步步看),如果方法1快,那么就不會執行到setInterval,但你說兩個id都能打印出來,那么就可能不是這個原因了;3.你將這兩個定時器拿出來測試看看能不能清除掉。4.還有一點,js作為一個單線程,用for循環搞定時器就算了,還搞ajax,可能某個地方起沖突了。

查看完整回答
1 反對 回復 2018-11-07
?
漂流風車

TA貢獻70條經驗 獲得超21個贊

上代碼,而且在ajax里家定時器可能會因為請求沒回來家不上代碼一級執行完了 所以沒起效果

查看完整回答
反對 回復 2018-11-08
?
_Bling_

TA貢獻18條經驗 獲得超2個贊

感覺是異步的問題,先執行了清除操作,具體上代碼吧大家一起看

查看完整回答
反對 回復 2018-11-07
?
聰明的湯姆

TA貢獻112條經驗 獲得超33個贊

貼代碼

查看完整回答
反對 回復 2018-11-07
  • 4 回答
  • 0 關注
  • 9119 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號