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,因为我非常了解它,并且因为它提供了格式良好的annotated source code,因此您可以轻松地了解幕后的真实情况。

关于javascript - X秒后过期或超时永不结束循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39375199/

10-09 19:02