nice-timer
TypeScript icon, indicating that this package has built-in type declarations

1.3.2 • Public • Published

安装

npm i nice-timer -S

快速上手

import timer, { Timer, TimerInstance, wait } from 'nice-timer';

// 循环
const handle = timer({
  time: 1000,
  loop: true,
  cb(TimerOption) {
    app.innerText = Date();
  }
});
// 主动关闭循环
handle();
// 循环简写
const handle = timer(
  () => {
    app.innerText = Date();
  },
  1000,
  true
);

// 不循环
const handle2 = timer({
  time: 2000,
  loop: false,
  cb(TimerOption) {
    app.innerText = Date();
  }
});
// 不循环的简写
const handle2 = timer(() => {
  app.innerText = Date();
}, 2000);

// 循环2次结束
const handle3 = timer({
  time: 1000,
  loop: 2,
  cb(TimerOption) {
    app.innerText = Date();
  }
});
// 循环2次简写
const handle3 = timer(
  () => {
    app.innerText = Date();
  },
  1000,
  2
);

// 根据 check 的返回状态执行定时任务(简写不支持check和timerKey)
let a = 0;
const handle4 = timer({
  time: 1000,
  loop: true,
  check(TimerOption) {
    a++;
    // 仅在a===5或者a===10的时候运行定时任务
    if (a === 5 || a === 10) {
      return true;
    }
    return false;
  },
  cb(TimerOption) {
    app.innerText = Date();
  }
});

// 更新定时任务
const id = Symbol();
const handle = timer({
  time: 1000,
  cb() {
    // 每隔1秒打印日志1
    console.log(1);
  },
  timerKey: id
});
// 过5秒后更新标识符为id的这个定时任务,让他每隔3秒打印一下日志2
timer(() => {
  timer({
    time: 3000,
    cb() {
      console.log(2);
    },
    timerKey: id
  });
}, 5000);
// 自动关闭
handle();

// 直接使用Timer类创建新的实例
const TimerInstance2 = new Timer();
const handle5 = TimerInstance2.create({
  time: 1000,
  loop: true,
  cb(TimerOption) {
    app.innerText = Date();
  }
});
// 简写
TimerInstance2.create(() => {
  app.innerText = Date();
});
// 3秒后暂停 TimerInstance2 实例内所有定时任务
setTimeout(() => {
  TimerInstance2.stop();
}, 3000);
// 6秒后重新开启 TimerInstance2 实例内所有定时任务
setTimeout(() => {
  TimerInstance2.run();
}, 6000);

// 等待3秒
await wait(3000);
// 或者
wait(3000).then(() => {});

脚本引入

<script src="nice-timer.min.js"></script>
<script>
    const app = document.getElementById('app');
    const { timer, Timer, TimerInstance } = niceTimer;
    const handle = timer({
      time: 1000,
      loop: true,
      cb(TimerOption) {
        app.innerText = Date();
      }
    });
    // 主动关闭 handle 定时任务
    handle()
    // 创建新的实例
    const TimerInstance2 = new Timer()
    const a2 = TimerInstance2.create({
      time: 1000,
      loop: true,
      cb(TimerOption) {
        app.innerText = Date();
      }
    })
    // 停止 TimerInstance2 实例里面的所有定时任务
    TimerInstance2.stop()
    // 运行 TimerInstance2 实例里面的所有定时任务
    TimerInstance2.run()
  </script>

nice-timer

import timer, { Timer, TimerInstance } from 'nice-timer';
import { TimerOption, CreateOption, Handler, KeyType } from 'nice-timer/types';

export interface CreateOption {
  // 轮询时间
  time: number;
  // 定时后的回调函数
  cb: Handler;
  // 循环
  loop?: boolean | number;
  // 检查函数,返回true则表示该任务运行,否则不允许该cb,返回false时不运行cb但是该total还是会继续叠加
  check?(params: TimerOption): boolean;
  // 定时任务的标识符(建议使用symbol),相同的 timerKey 将进行替换传递进来的其他参数,定时任务将按照新的参数进行运行
  timerKey?: KeyType;
}

export interface TimerOption extends CreateOption {
  // 该定时任务的唯一值
  id: symbol;
  // 该任务的最后一次运行时间
  lastTime: number;
  // 该任务总运行次数
  total: number;
  // 该任务cb运行次数
  times: number;
  // 关闭当前任务函数
  targetCloseHandler: () => void;
}

const option: CreateOption = {
  time: 1000,
  cb(TimerOption) {
    console.log(new Date());
  }
};
const handle = timer(option);

// 简写
const handle2 = timer(() => {
  console.log(new Date());
}, 1000);
const TimerInstance2 = new Timer();
const handle2 = TimerInstance2.create(option);

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 1.3.2
    0
    • latest

Version History

Package Sidebar

Install

npm i nice-timer

Weekly Downloads

0

Version

1.3.2

License

MIT

Unpacked Size

24.7 kB

Total Files

8

Last publish

Collaborators

  • saintlovei