javascript - 将此无限循环添加到我的 javascript 代码后,为什么我的页面无法加载?
问题描述
我在 javascript 中创建了这个无限循环,以便运行 setTimeout 函数。问题是,通过这样做,我的页面甚至不会首先加载。
这是javascript代码:
function blurDiv() {
console.log("here");
rankingList.style.filter="blur(0.7)";
}
function loadContent() {
console.log("loaded");
$( "#ranking-container" ).load("index.php #ranking-list");
rankingList.style.filter="blur(0)";
}
while(true) {
setTimeout(blurDiv, 4000);
setTimeout(loadContent, 5000);
}
我原以为循环只会在这 5 秒后运行另一次迭代。
解决方案
使用setInterval()
代替while(true){setTimeout()}
function blurDiv() {
console.log("here");
// Other stuff here
}
function loadContent() {
console.log("loaded");
// Other stuff here
}
setInterval(blurDiv, 5000);
setInterval(loadContent, 5000);
解释:
setTimeout()
是一个异步函数,这意味着 JS 不会等待它完成并继续运行。因此,使用循环while(true)
,它会在每一轮创建两个超时回调,这将导致大量(非常大量)超时回调,并且永远不会退出该while(true)
循环。
但是,通过使用setInterval()
您可以创建一个计时器,该计时器将在每个周期(间隔)中触发回调。
推荐阅读
- javascript - 打开连接到跳转链接锚的手风琴面板
- python - 优化 POST 请求中的 CSV 文件处理(Django Rest Framework)
- ios - Firebase 方法返回未知错误
- typescript - 如何修复 TypeError: undefined is not an object (evalating '_config.Svg.G')
- java - MySQL 源代码文档中的 (1UL << 22) 是什么意思
- makefile - 调试无限期挂起的makefile
- node.js - 如何将 response.body 从请求模块功能中发送出去?
- reactjs - 在 reactjs 中设置状态时遇到问题
- apache-pig - Apache Pig,包括 DaysBetween 的端点
- time-series - 时间序列中的缺失数据