setInterval设置停止和循环 (实用)

setInterval设置停止和循环 (实用)

原文出处:https://blog.csdn.net/qq_33212500/article/details/70242646

自动结束的计时器

var timesRun = 0;

var interval = setInterval(function(){

timesRun += 1;

if(timesRun === 60){

clearInterval(interval);

}

//do whatever here..

}, 2000);

var startTime = new Date().getTime();

var interval = setInterval(function(){

if(new Date().getTime() - startTime > 60000){

clearInterval(interval);

return;

}

//do whatever here..

}, 2000);

var interval = setInterval(function(){

timesRun += 1;

var textNode = $('input[type="radio"][name="radioName'+questionNo+'"]:checked').parent().parent().find('input[type="text"]');

console.log(textNode.val());

if(textNode.val() == '' || textNode.val() == undefined){

//当节点没有值或者还未在页面上生成,则赋值

console.log(textNode.length);

textNode.val(inputValue);

}

else {

//已经有值了,则清除停止

clearInterval(interval);

}

}, 500);

如果要在别的地方停止计时器,可以加一个全局变量(_stopTimer)解决:

private _stopTimer = false;

ionViewDidEnter() {

if (this._stopTimer) {

this.startTimer();

}

}

ionViewDidLeave() {

this._stopTimer = true;

}

private startTimer(): void {

this._stopTimer = false;

let myTimer = setInterval(() => {

// 停止定时器

if (this._stopTimer == true) {

clearInterval(myTimer);

return;

}

// 重复动作。。。

}, 500);

}

补充:

1、尽可能在setInterval中自己清除(停止)。 2、如果将setInterval赋给一个全局变量,在其他地方ClearInterval进行清除有可能达不到效果。(原因:那边刚清除,这边可能又重新赋值了,惨痛的经历!)

2018-10-22 上面的补充感觉不合逻辑,划掉。 具体可参考:JS中setInterval()和clearInterval()的使用以及注意事项

相关推荐

将“feet

将“feet"翻译成中文

bei365官网 08-20
阅读更多
IUNI U2用刷机大师刷miui,可是我系统更新后再开机,一直卡在开机画面

IUNI U2用刷机大师刷miui,可是我系统更新后再开机,一直卡在开机画面

365日博体育备用 07-21
阅读更多
给领导送礼怎么说话?掌握30条经典话术,让领导笑纳你的心意!

给领导送礼怎么说话?掌握30条经典话术,让领导笑纳你的心意!

bei365官网 08-06
阅读更多