gpt4 book ai didi

javascript - 递归 setTimeouts 对性能不利吗?

转载 作者:行者123 更新时间:2023-12-05 00:35:32 24 4
gpt4 key购买 nike

我按照 W3Schools 的本教程创建了一个图像幻灯片:https://www.w3schools.com/howto/tryit.asp?filename=tryhow_js_slideshow_auto
它通过 setTimeout() 使用递归函数自动滑动图像。这对用户的浏览器性能不利吗?或者我可以不用担心地使用它吗?

var slideIndex = 0;
showSlides();

function showSlides() {
var i;
var slides = document.getElementsByClassName("mySlides");
var dots = document.getElementsByClassName("dot");
for (i = 0; i < slides.length; i++) {
slides[i].style.display = "none";
}
slideIndex++;
if (slideIndex > slides.length) {
slideIndex = 1
}
for (i = 0; i < dots.length; i++) {
dots[i].className = dots[i].className.replace(" active", "");
}
slides[slideIndex - 1].style.display = "block";
dots[slideIndex - 1].className += " active";
setTimeout(showSlides, 2000); // Change image every 2 seconds
}

最佳答案

如果通过递归,您的意思是 setTimeout最终调用另一个(或更常见的是本身),然后不。
事实上,这是解决问题的首选方式。
通过使用 setTimeout它使浏览器在更新之间休息以进行其他更新(也就是“非阻塞”)。
您也可以使用 setInterval让它运行,但问题是如果出现问题,您必须显式调用 clearInterval否则它只会不断抛出错误。setTimeout只会抛出一个错误并停止(因为它不会调用另一个 setTimeout )。 setTimeout绝对是我和许多其他人的首选方法。
它也不会产生任何类型的堆栈溢出(就像普通的递归函数,如果它们递归太长的话),因为从这个意义上说它并不是真正的递归。

关于javascript - 递归 setTimeouts 对性能不利吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63503762/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com