博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
定时获取服务器时间戳的一个类(Typescript)
阅读量:6616 次
发布时间:2019-06-25

本文共 1457 字,大约阅读时间需要 4 分钟。

hot3.png

export class TimeStampService {  private _localTimestamp: number;   // 本地时间戳  private _serveTimestamp: number;  // 服务器端时间戳  private _duration: number = 1000 * 60 * 5; // 时间戳更新频率 (毫秒)  private _timeDiffer: number; // 服务器和本地的时间差 服务器-本地  constructor(  ) {    this._timeDiffer = 0;    this.getTimeDiffer();  }  private getTimeDiffer() {    const xhr = new XMLHttpRequest();    xhr.open('get', environment.URL_TIME, true);    const that = this;    xhr.onload = function () {      if (this.status === 200) {        const result = JSON.parse(this.response);        const now = new Date().getTime();        that._timeDiffer = result.data.timestamp - now;      }    };    xhr.onerror = function () {      console.log('xhr error', xhr);    };    xhr.send();  }  get Duration() {    return this._duration;  }  get ServerTimeStamp() {    if (!this._localTimestamp) {      this._localTimestamp = new Date().getTime();    } else {      const now = new Date().getTime();      // 提前30秒做一次异步矫正      if (now - this._localTimestamp > this.Duration - 1000 * 30) {        this.getTimeDiffer();  // 更新差值 防止用户修改本地时间      }      if (now - this._localTimestamp > this.Duration) {        this._localTimestamp = now;      }    }    this._serveTimestamp = this._localTimestamp + this._timeDiffer;    return this._serveTimestamp;  }}

我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=3cjlyulghccgo

转载于:https://my.oschina.net/lilugirl2005/blog/3053136

你可能感兴趣的文章
java中文乱码解决之道(二)—–字符编码详解:基础知识 + ASCII + GB**
查看>>
《ANTLR 4权威指南》——2.5 语法分析树监听器和访问器
查看>>
02_JNI中Java代码调用C代码,Android中使用log库打印日志,javah命令的使用,Android.mk文件的编写,交叉编译...
查看>>
这些国货,在阿里平台上被美国剁手党抢疯了
查看>>
《Excel 职场手册:260招菜鸟变达人》一第 2 招 常用快捷键Windows与Mac对照
查看>>
《Greenplum企业应用实战》一第1章 Greenplum简介1.1 Greenplum的起源和发展历程
查看>>
开源世界已成围城:成本让企业蜂拥而来,也让企业退缩转投
查看>>
《Python编程快速上手——让繁琐工作自动化》——1.4 在变量中保存值
查看>>
想改进你的卷积神经网络?看看这14种设计模式!
查看>>
安装完最小化 RHEL/CentOS 7 后需要做的 30 件事情(六)
查看>>
[LeetCode]--100. Same Tree
查看>>
阿里蒋晓伟谈流计算和批处理引擎Blink,以及Flink和Spark的异同与优势
查看>>
快速掌握Redis——第二招:安装
查看>>
从Jetty、Tomcat和Mina中提炼NIO构架网络服务器的经典模式(一)
查看>>
Windows 10之 隐藏“此电脑”窗口的6个额外文件夹
查看>>
15.1异常处理
查看>>
HAProxy负载均衡web服务
查看>>
初学者学习Linux之NFS
查看>>
Rabbitmq学习(一) Rabbitmq初探
查看>>
8月第一周B2B类网站排名:阿里巴巴持续领先
查看>>