文档章节

定时获取服务器时间戳的一个类(Typescript)

lilugirl
 lilugirl
发布于 05/23 13:26
字数 242
阅读 14
收藏 0
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

© 著作权归作者所有

lilugirl
粉丝 96
博文 433
码字总数 126851
作品 0
杨浦
程序员
私信 提问
我们应该如何(以及为什么)要将Typescript与Express、nodejs一起使用(译文)

在我的职业生涯开始时,我是一名桌面应用开发人员,其中强类型语言占据了市场主导地位。 当我迁移到Web开发时,我对JavaScript和Python等语言的每个新功能都很着迷。事实上,我没有必要声明变...

前端技术小哥
2018/11/19
0
0
如何用TypeScript来创建一个简单的Web应用

转载地址 如何用TypeScript来创建一个简单的Web应用 安装TypeScript 获取TypeScript工具的方式: 通过npm(Node.js包管理器) 构建你的第一个TypeScript文件 创建项目文件夹 创建文件greeter...

durban
2018/07/23
0
0
TypeScript 入门指南

你是否听过 TypeScript? TypeScript 是微软开发的 JavaScript 的超集,TypeScript兼容JavaScript,可以载入JavaScript代码然后运行。TypeScript与JavaScript相比进步的地方 包括:加入注释,...

红薯
2012/10/07
65K
35
TypeScript系列1-简介及版本新特性

简介 随着PC端快速向移动端迁移,移动(体验)优先的概念也越来越响。由于ReactJS目前移动端仅仅支持iOS,因此移动端Web开发框架只能选择: AngularJS/Angula2 + Ionic框架 + Cordova。想要学...

一配
2015/08/15
0
0
TypeScript 入门指南

你是否听过 TypeScript? TypeScript 是微软开发的 JavaScript 的超集,TypeScript兼容JavaScript,可以载入JavaScript代码然后运行。TypeScript与JavaScript相比进 步的地方 包括:加入注释...

彭博
2012/11/27
948
0

没有更多内容

加载失败,请刷新页面

加载更多

IT兄弟连 Java语法教程 Java语言的跨平台特性

什么是平台 Java是可以跨平台的编程语言,那么首先我们需要知道什么是平台,通常我们把CPU与操作系统的整体称为平台。 CPU大家都知道,是计算机的大脑,它既负责思维运算,又负责计算机中各种...

老码农的一亩三分地
2分钟前
0
0
http传值问题

这两天遇到一个问题 ,与一个渠道联调接口,http请求,展示ptf 的需求,服务方以一个二进制的方式返回。 当时我们在一开始开发的时候,我们按照读取文件的方式处理,本地存一个ptf 的方式 ,...

鬼才王
11分钟前
0
0
【面试】如果你这样回答“什么是线程安全”,面试官都会对你刮目相看

不是线程的安全 面试官问:“什么是线程安全”,如果你不能很好的回答,那就请往下看吧。 论语中有句话叫“学而优则仕”,相信很多人都觉得是“学习好了可以做官”。然而,这样理解却是错的。...

中关村的老男孩
11分钟前
4
0
5.01- Druid数据源配置

1、配置项 配置 缺省值 说明 name 无 配置这个属性的意义在于,如果存在多个数据源,监控的时候 可以通过名字来区分开来。如果没有配置,将会生成一个名字, 格式是:"DataSource-" + Syste...

静以修身2025
16分钟前
0
0
itop4412开发板-Linux内核的编译

本篇文章基于itop4412开发板 5.3.2.1源码目录 Linux 内核源码在光盘“06_源码_uboot 和 kernel”目录下,如下图所示。 5.3.2.2 编译器 内核的编译器和 uboot 的编译器一样,参考“5.3.1.2 编...

书白
20分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部