起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10620|回复: 20

[结贴] 在顶部菜单中增加服务器时间

[复制链接]

57

主题

375

帖子

1515

积分

金牌会员

Rank: 6Rank: 6

积分
1515
QQ
发表于 2017-5-3 14:38:01 | 显示全部楼层 |阅读模式
参照http://docs.wex5.com/bex5-portal-modify/#2.1.3 的方法,
该方法中  var now = new Date() 取本机时间,
改成了        var now = bizUtil.getSystemDatetime() 取服务器时间
这些都没有问题,只是发现页面会不断的发送请求,感觉页面像一直刷新的样子
请问这样是正常的吗??会不会浪费系统资源 ?为什么取 new Date()不会有这样问题?
360桌面截图20170503143623.jpg
发表于 2017-5-3 15:05:55 | 显示全部楼层
bizUtil.getSystemDatetime()是请求服务器端时间,当然要请求服务器了!

你应该自己实现只请求一次!然后再前端js中 ,使用js代码让时间递增!不要重复请求后台

new Date() 是获取客户端的时间,当然不用请求服务器!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

57

主题

375

帖子

1515

积分

金牌会员

Rank: 6Rank: 6

积分
1515
QQ
 楼主| 发表于 2017-5-3 15:57:28 | 显示全部楼层
liangyongfei 发表于 2017-5-3 15:05
bizUtil.getSystemDatetime()是请求服务器端时间,当然要请求服务器了!

你应该自己实现只请求一次!然后 ...

如果就使用bizUtil.getSystemDatetime()这个方法,对服务器性能影响大吗?
回复 支持 反对

使用道具 举报

发表于 2017-5-3 16:26:19 | 显示全部楼层
chean 发表于 2017-5-3 15:57
如果就使用bizUtil.getSystemDatetime()这个方法,对服务器性能影响大吗?

当然大了!连续频繁发送请求是最忌讳的!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

57

主题

375

帖子

1515

积分

金牌会员

Rank: 6Rank: 6

积分
1515
QQ
 楼主| 发表于 2017-5-3 17:01:37 | 显示全部楼层
哦, 我在base.js修改如下,
Model.prototype.bindUpdateDateTime = function(){
                var $root = $(this.getRootNode());
                var $dateTime = $root.find('.x-portal-datetime');
                 var now = bizUtil.getSystemDatetime();
                if($dateTime.size()>0){
                        var model = this;
                        var fn = function(){
                           now = justep.Date.increase(now, 1, 's');
                         $dateTime.text(justep.Date.toString(now, 'yyyy-MM-dd hh:mm:ss'));
                        };
                         this._updateDateTimeHandle = window.setInterval(justep.Util.bindModelFn(this, fn, this), 1000);
                  }
        };
这样的话请求减少了,但会有一定的延时,求指教,谢谢。
回复 支持 反对

使用道具 举报

发表于 2017-5-3 17:09:26 | 显示全部楼层
chean 发表于 2017-5-3 17:01
哦, 我在base.js修改如下,
Model.prototype.bindUpdateDateTime = function(){
                var $root = $(this.get ...

网络请求 会 延时,没办法,请求服务器返回数据总要消耗时间的

js代码执行应该没什么延时的吧!
代码也不多

你可以获取这个时间后!为了时间更准确,可以给它提前1秒
你也是这样做的!

qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

57

主题

375

帖子

1515

积分

金牌会员

Rank: 6Rank: 6

积分
1515
QQ
 楼主| 发表于 2017-5-3 17:18:52 | 显示全部楼层
道理上来讲,是不会有时间差啊,而且每次时间差的间隔也不一致,有时候是2S,有时候4S,这比较郁闷啊
还有什么解决方案吗??代码写的有问题吗??
360桌面截图20170503171554.jpg
回复 支持 反对

使用道具 举报

发表于 2017-5-3 17:26:25 | 显示全部楼层
chean 发表于 2017-5-3 17:18
道理上来讲,是不会有时间差啊,而且每次时间差的间隔也不一致,有时候是2S,有时候4S,这比较郁闷啊
还有 ...

你看下网络请求吧
看第一个截图,平均也就 60ms左右
怎么会误差4秒呢??是否有其他代码执行同步操作!你的代码需要等待执行把!

你可以先使用点击事件测试一下!点击事件中调用bizUtil.getSystemDatetime()
然后使用你的代码显示时间是正常的吗??

保证没有其他代码执行的干扰
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

57

主题

375

帖子

1515

积分

金牌会员

Rank: 6Rank: 6

积分
1515
QQ
 楼主| 发表于 2017-5-3 17:51:42 | 显示全部楼层
bizUtil.getSystemDatetime()没有问题,但是开始计算的时候是在页面全部加载完成后才开始 计算,这样就会有个时间差了。
应该是写的位置有问题,请再帮看下哈。
回复 支持 反对

使用道具 举报

发表于 2017-5-4 09:51:56 | 显示全部楼层
chean 发表于 2017-5-3 17:51
bizUtil.getSystemDatetime()没有问题,但是开始计算的时候是在页面全部加载完成后才开始 计算,这样就会有 ...

那你就在页面全部加载完以后,再去发送请求获取这个时间

http://docs.wex5.com/wex5-ui-question-list-2090/

你是在onload  事件中写的吗?
这个事件中,改加载的应该都执行完了才对吧,大不了你延迟几秒去请求时间
使用setTimeout



qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-11-24 11:03 , Processed in 0.062149 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表