high-performance-timer
v1.0.2
Published
高性能的定时器
Downloads
2
Readme
高性能的定时器
使用 heap 实现的高性能的定时器,时间复杂度为 O(logn)
🏠 Homepage
Install
npm install high-performance-timer
Usage
默认排序规则是基于 date 对象的 getTime() 来排序处理
let timer = new Timer();
timer.set("1", {
// 日期必须是未来的
date: new Date("2019-08-01 15:45:00"),
cb() {
console.log("date:1");
}
});
timer.set("2", {
// 日期必须是未来的
date: new Date("2019-08-01 15:45:30"),
cb() {
console.log("date:2");
}
});
timer.set("3", {
// 日期必须是未来的
date: new Date("2019-08-01 15:46:00"),
cb() {
console.log("date:3");
}
});
// date:1 date:2 date:3
用户也可以自定义排序规则和获取 timeout 的规则
// 自定义处理规则
let timer2 = new Timer({
// 排序规则 -> priority 小的先执行
comparisonHandler(dataA, dataB) {
return dataA.priority < dataB.priority;
},
// 获取timeout 的时间 data 为要执行的数据
getTimeoutHandler(data) {
return data.timeout;
}
});
timer2.set("1", {
timeout: 3000,
priority: 1,
cb() {
console.log("1");
}
});
timer2.set("2", {
timeout: 3000,
priority: 2,
cb() {
console.log("2");
}
});
timer2.set("3", {
timeout: 3000,
priority: 3,
cb() {
console.log("3");
}
});
// 1 2 3
Options
comparisonHandler(dataA,dataB)
堆排序的对比规则扩展字段,同 Array.sort()
getTimeoutHandler(data)
data: 堆顶的元素 获取 timeout 的扩展字段
API
set(key,data)
设置任务,key 为唯一 id,当任务执行完毕后会自动删除。
let timer = new Timer();
timer.set("1", {
// 日期必须是未来的
date: new Date("2019-08-01 15:45:00"),
cb() {
console.log("date:1");
}
});
delete(key)
删除未执行的任务
let timer = new Timer();
timer.set("1", {
// 日期必须是未来的
date: new Date("2019-08-01 15:45:00"),
cb() {
console.log("date:1");
// 任务 2 将不会执行
timer.delete("2");
}
});
timer.set("2", {
// 日期必须是未来的
date: new Date("2019-08-01 15:45:00"),
cb() {
console.log("date:2");
}
});
clear()
清空所有未执行的任务
let timer = new Timer();
timer.set("1", {
// 日期必须是未来的
date: new Date("2019-08-01 15:45:00"),
cb() {
console.log("date:1");
// 任务 2 将不会执行
timer.clear();
}
});
timer.set("2", {
// 日期必须是未来的
date: new Date("2019-08-01 15:45:00"),
cb() {
console.log("date:2");
}
});
Run tests
npm run test
Author
👤 cuixiaorui
- Github: @cuixiaorui
🤝 Contributing
Contributions, issues and feature requests are welcome!Feel free to check issues page.
Show your support
Give a ⭐️ if this project helped you!
📝 License
Copyright © 2019 cuixiaorui. This project is MIT licensed.
This README was generated with ❤️ by readme-md-generator