关于for 与 计时器(一次性计时器与间隔性计时器)的 “冲突”

宋某人... 2019-01-17 08:29:22
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
开发工具与关键技术:VS JavaScript
作者:宋永烨
撰写时间:2019年1月16日
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
For循环
for(var x=0;x<10;x++){}; 当x不满足x<10是 函数停止;
注意:迭代语句会从第二句开始执行;即 此for循环第一次执行时,x = 0;而非1.

计时器
SetTimeout(可执行代码片段或函数,时间(单位为毫秒));一次性计时器
只执行一次代码块,间隔时间为输入的时间
注意:计时器在被调用是不会马上运行,而是会等到设置的时间结束后在调用;

当把计时器放入for循环中时 "冲突" 便出现了
以下为代码 效果为在页面上输出电脑时间

预想中的效果为 当for循环执行到计时器中时,等待计时器,待计时器记时结束后,再往下运行代码.
那么输出的事件是有间隔的 间隔为一秒
实际效果 如下图所示:

为什么会这样,原因应该是什么
当for循环执行到计时器时,计时器的函数已经被调用,但时间没走完, 但是for循环并没有等待计时器,而是继续往下执行,当执行完成后在重新执行,直至结束.因为for循环执行速度非常快,导致计时器被连续调,从而无法实现预想中的效果.

拓展开发:
通过间隔性计时器与if 判断来改变元素的display 达到类似动画效果的目的
代码如下:


...全文
127 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_44690344 2019-05-16
  • 打赏
  • 举报
回复
小白一枚,学习一下!感谢
宋某人... 2019-01-17
  • 打赏
  • 举报
回复
谢谢解惑
丰云 2019-01-17
  • 打赏
  • 举报
回复
js有作用域的概念,而settimeout会跳出作用域, 你可以简单的理解为setimeout单独开了一个线程(实际不是这样,只是效果类似) 所以,你期望的效果就没有出现。
内容概要:本文详细介绍了一种基于MATLAB实现的改进前推回代法,用于高效求解低压配电网的潮流计算问题。该方法针对传统前推回代法在处理放射状或弱环状配电网络时存在的收敛性差、计算效率低等缺陷,提出了多项优化策略,包括节点分层排序、支路编号优化以及合理的电压初始值设定,从而显著提升了算法的数值稳定性与运算速度。文中系统阐述了改进算法的数学模型构建过程与核心原理,并提供了完整的MATLAB代码实现流程。通过标准算例的仿真测试,验证了该改进方法在计算精度和收敛性能方面的优越性,可为低压配电网的规划、运行状态分析、电压调控及分布式电源接入能力评估等实际工程问题提供可靠的技术支撑。; 适合人群:具备电力系统分析基础知识和MATLAB编程能力的高校研究生、从事电力系统相关研究的科研人员,以及负责配电网规划、运行与优化的工程技术人员。; 使用场景及目标:①实现低压配电网的稳态潮流计算与仿真分析,获取各节点电压和支路功率分布;②支撑含分布式光伏、储能等设备接入的配电网承载力评估与电压越限风险分析;③用于研究电压调控策略、无功补偿配置等优化问题;④作为电力系统专业课程的教学案例,帮助学生深入理解潮流计算的基本原理与数值算法的编程实现。; 阅读建议:建议读者结合文中的理论推导与提供的MATLAB代码进行上机实践,重点关注节点分层逻辑和迭代收敛判据的编程实现细节,通过调试和修改算例参数来加深理解,并可尝试将该方法拓展应用于三相不平衡潮流或动态潮流计算等更复杂的场景。

87,987

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧