timed-silky
Version:
Timed-Silky 是基于一款基于 TypeScript 的定时任务调度器。得益于 TypeScript,Timed-Silky 可以用符合特定句式的自然语言描述任务的调度规则,提供丝滑的链式调用接口。
18 lines (17 loc) • 578 B
JavaScript
function createTask(callback, ruleChain, ...args) {
let lastRunAt = 0;
let timeOutHandle;
let f = async function () {
let r = callback(...args);
if (r instanceof Promise) {
await r;
}
clearTimeout(timeOutHandle);
lastRunAt = Date.now();
let nextRunAt = ruleChain.generateNextTime(lastRunAt);
setTimeout(f, nextRunAt - Date.now());
};
let nextRunAt = ruleChain.generateNextTime(lastRunAt);
timeOutHandle = setTimeout(f, nextRunAt - Date.now());
}
export { createTask };