javascript - 为什么js代码里调用了php变量运行就明显变慢了
PHP中文网
PHP中文网 2017-04-11 12:22:13
[JavaScript讨论组]

我的代码如下`
-----------这是问题代码------


`
-----------这是问题代码------
-----------这是修改了today的获取方式的正常代码------


本博已运行

-----------这是修改了today的获取方式的正常代码------
本想简化代码只留下秒方便各位看,但是发现只留下秒就没有明显的延迟了,而且如果把today变量改成today=new Date();从本地获取时间就没问题了,但是本地是不准的,想从服务器获取,而且我的代码只有第一次运行的时候调用了today,第二次运行完全是本地js自行加秒数,为什么还会有这么大的延迟。很不解。
运行环境在本地和云端都测试了都是有延迟。
延迟是不规律的加秒数,有时候1秒运行一次,有时候两秒运行一次。
具体效果各位可以本地创建test.php运行。按道理可能是js运行效率慢,可是这无法解释为什么同样的代码只是改变today的获取方式从服务器获取改成本地就没有延迟了。

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(2)
怪我咯

计时器没有延迟,是你写的代码中最后获取秒的时候,浮点数的精度不同,导致第一种方法中秒的计算有误,有时候会出现两次循环秒数值一样的情况

第一个改成这样

today="<?php echo time();?>000"//获取服务器时间
timeold=(today-1488276882)/1000;//时间差=today时间戳-开始时间戳

改成这样是让你理解,是浮点数精度不同造成两者计时不一样。其实你第二种累加下去误差足够大也有可能出现两秒跳一次的情况。
本质上还是计算方式有问题,整数计算就能解决为何要用浮点数?

本博已运行<span id="span_dt_dt"></span>秒
<script type="text/javascript">
today="<?php echo time();?>"//获取服务器时间
timeold=(today-1488276882);//时间差=today时间戳-开始时间戳
function show_date_time(){
window.setTimeout("show_date_time()", 1000);//每隔1秒运行一次show_date_time()函数
var seconds = Math.floor(timeold % 60);     
var minsold = Math.floor((timeold / 60) % 60);
var hrsold = Math.floor((timeold / 3600) % 24);
var daysold = Math.floor((timeold / 3600) / 24);

span_dt_dt.innerHTML=daysold+"天"+hrsold+"小时"+minsold+"分"+seconds;
timeold=(timeold+1)//timeold=服务器时间+1
}
show_date_time();
</script>
ringa_lee

你说打了那个time()出来就慢了,你逗我呢?
还有js是单线程,所以js的定时器都是不准确的,如果不修正误差的话,一直累计,误差会越来越大

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号