mysql 定时器不能持续循环执行_js for循环下的定时器setTimeout失效?

最近做项目 在写js的时候遇到这么一个问题:我需要写一个类似于***帝国的效果 页面不断有数据往下展示63e4597103f2438df809ee89f805fef9.png

于是我想到要定时器的功能 定时(500毫秒)在页面上 一行行 显示出数据 但是 同时我后台还需要取其他数据(不是一次性取出的)于是想使用 外层嵌套一个for循环 让js 将第一次取出的数据定时展示结束后 再取第二段数据 结果 发现 js不支持这种 for循环下 使用定时器的功能for(var i=1;i<10;i++)

{

setTimeout("alert('i="+i+"')",100);

alert(i)

}

这段js不会按照顺序 定时执行 而是会先处理下面的下面的alert() 在js里面 会在100毫秒之前 先给你吧for先执行结束 再执行setTimeout 而且由于线程问题javascript没法实现php的那个sleep功能(暂停几秒后执行)很多人尝试过 写一个js的sleep的功能 但是都没有如愿 于是有人想出了某些不按常理出牌的方法:

方法一:设置一个函数 让浏览器使劲执行 计算个几万次 几十万次 浏览器假死 看起来 就跟暂停了一样

方法二:执行定时的地方 读取当时时间 然后对时间操作 执行时间减去 读取时间 如果正好等于延迟时间 就执行

这两种方法都有很大问题:当时数据很少的时候 方法二可以实现 但是 当数据比较大的时候 方法一 方法二都会造成浏览器直接卡死了

至于这个问题怎么处理 还是需要仔细研究下数据和流程 尽量在一个定时器中完成就可以啦! 方法总比问题多嘛!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值