1.0.0 • Published 8 months ago

cflow-countdown v1.0.0

Weekly downloads
-
License
ISC
Repository
-
Last release
8 months ago

倒计时脚本

使用说明

使用范例

const raw = { a: 60, b: 120, c: 180 };
const inst = new CountDown(
  raw,
  data => {
    this.cdResult = data;
  },
  {
    immediately: true,
    onSomeEnd: (ids) => {
      console.log('本轮倒计时结束的 >>>', ids)
    },
    onEnd: (ids) => {
      console.log('全部倒计时结束 >>>', ids)
    },
  }
);

Params

参数名参数意义必要默认值
raw原始数据true{}
onTick每轮倒计时的计算结果,参数为 结算结果,格式如:{ id, num, text }false-
options其他配置项false-

Options

属性含义类型默认值可选值
immediately初始化时是否直接开始计时Booleantruetrue/false
interval倒计时间隔(毫秒)(不合法的值均视为1000ms)Number1000正整数
format将剩余时间(秒)转化为文本的处理函数(timeLeft: number) => string
onStart手动开始倒计时时调用() => any
onEnd全部项目倒计时结束时调用(计时器会被清除)(ids) => any
onPause手动暂停倒计时时调用
onStop手动停止倒计时时调用
onSomeEnd本轮倒计时有结束的数据时调用(ids) => any

逻辑思路

部分浏览器切换至后台一段时间后会自动休眠,计时器(setIntervalsetTimeout)被暂停,退出休眠状态时重启计时器。这是浏览器的优化机制,我们并没有什么办法规避。

本脚本采用曲线救国的方式,即:

先计算出本地环境下的倒计时结束时间,那么,每轮 Tick 的剩余时间 = 本地结束时间 - 当前的本地时间相减。

注意: 因为该方法依赖本地时间,在本地时间发生变化时(手动修改、跨时区等),计算结果会不准。因此,本脚本默认倒计时期间本地时间不会被修改

目前仅支持秒级倒计时,暂不支持毫秒级。

优化方向

  1. 大量数据的处理
1.0.0

8 months ago