过期或超时在X秒后永不结束循环
Expire or Time Out never ending loop after X seconds
如何在5秒后停止此进程?
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript">
function changeBanner(){
// my change banner code
}
window.onload = function () { setInterval(changeBanner, 100) };
</script>
所以目前我每100毫秒改变一次横幅。但是我希望它在5秒后停止。
我想setTimeout可能会有效果;
window.onload = function () { setTimeout(setInterval(changeBanner, 100), 5000) };
我想让它在5秒后停止。
存储setInterval
的返回值并与clearInterval
一起使用
var timer = setInterval(changeBanner, 100);
setTimeout(function() {
clearInterval(timer)
}, 5000);
也有几个库实现函数包装器来实现相同的功能。例如,在underscore.js中,您可以使用_.before
:
var changeBannerLimited = _.before(50, changeBanner);
var timer = setInterval(changeBannerLimited, 100);
注意,与使用clearInterval
相反,这将永远继续调用changeBannerLimited函数,然而在被调用50次(10 * 5秒)之后,它将不再将调用传递给changeBanner。
顺便说一下我选择了underscore.js,因为我对它很了解,而且它提供了格式良好的带注释的源代码,所以你可以很容易地理解幕后真正发生的事情。
您可以将setInterval
的返回值存储到一个变量中,以便稍后可以取消它:
function changeBanner(){
// my change banner code
}
window.onload = function () {
var id=setInterval(changeBanner, 100);
window.setTimeout(function() {
window.clearInterval(id);
},5000);
};
使用clearInterval
window.onload = function () {
var bannerInterval = setInterval(changeBanner, 100);
setTimeout(function() {
clearInterval(bannerInterval);
}, 5000);
};
将setInterval
的输出保存在变量中,以便能够调用clearInterval
;
window.onload = function () {
var job= setInterval(changeBanner, 100) ;
setTimeout(clearInterval(job), 5000)
};
相关文章:
- 为什么“;未定义的“;在JavaScript中结束循环
- 循环结束/推送到数组之前在页面上呈现EJS
- 希望日期开始结束于while循环中的一个房间id的一个数组
- 使用while循环+break是一种可接受的方式;goto;手术的结束
- 用于循环的 Javascript 过早结束
- 如何在javascript中循环结束后执行语句
- 在for循环中另一个音频结束后播放一段时间的音频
- addclass循环结束时调用函数
- Sequelize等待,直到循环通过回调结束
- Node/Express - 如何等到 For 循环结束再使用 JSON 进行响应
- 如何使用事件处理程序连续循环遍历数组列表(从结束恢复到开始)
- 同时循环承诺,直到另一个承诺结束
- 破;不结束循环
- 因为循环过早结束
- jQuery函数使用包含setTimeout的每个循环调用自身,立即发生,而不是在结束时发生
- 在javascript中使用什么循环,在结束之前运行某个代码
- Javascript-在while循环结束后仅显示数组中的最后一个值
- 返回HTML结束循环过早
- 过期或超时在X秒后永不结束循环
- JS动画结束循环,希望在不使用的情况下连续循环;setInterval/setTimout