原文出处: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()的使用以及注意事项