我正在使用setInterval(fname,10000);在JavaScript中每10秒调用一个函数。有可能在某个事件中停止调用它吗?
我希望用户能够停止重复刷新数据。
我正在使用setInterval(fname,10000);在JavaScript中每10秒调用一个函数。有可能在某个事件中停止调用它吗?
我希望用户能够停止重复刷新数据。
当前回答
您可以设置一个新变量,并让它在每次运行时递增++(加1),然后我使用一个条件语句结束它:
var intervalId = null;
var varCounter = 0;
var varName = function(){
if(varCounter <= 10) {
varCounter++;
/* your code goes here */
} else {
clearInterval(intervalId);
}
};
$(document).ready(function(){
intervalId = setInterval(varName, 10000);
});
我希望这会有所帮助,而且是正确的。
其他回答
setInterval()返回一个间隔ID,您可以将其传递给clearInterval(
var refreshIntervalId = setInterval(fname, 10000);
/* later */
clearInterval(refreshIntervalId);
请参阅setInterval()和clearInterval(()的文档。
在nodeJS中,可以在setInterval函数中使用“this”特殊关键字。
您可以使用this this关键字来clearInterval,下面是一个示例:
setInterval(
function clear() {
clearInterval(this)
return clear;
}()
, 1000)
当您在函数中打印此特殊关键字的值时,将输出Timeout对象Timeout{…}
如果将setInterval的返回值设置为变量,则可以使用clearInterval来停止它。
var myTimer = setInterval(...);
clearInterval(myTimer);
您可以设置一个新变量,并让它在每次运行时递增++(加1),然后我使用一个条件语句结束它:
var intervalId = null;
var varCounter = 0;
var varName = function(){
if(varCounter <= 10) {
varCounter++;
/* your code goes here */
} else {
clearInterval(intervalId);
}
};
$(document).ready(function(){
intervalId = setInterval(varName, 10000);
});
我希望这会有所帮助,而且是正确的。
诀窍
setInterval返回一个数字:
解决方案
记下这个号码。将其传递给函数clearInterval,您就安全了:
代码:
始终将返回的setInterval数存储在变量中,以便以后可以停止该间隔:
const intervalID = setInterval(f, 1000);
// Some code
clearInterval(intervalID);
(将此数字视为setInterval的ID。即使您调用了许多setInterval,也可以使用正确的ID来停止其中的任何一个。)