JavaScript如何实现手写原生任务定时器
短信预约 -IT技能 免费直播动态提醒
这篇文章主要介绍JavaScript如何实现手写原生任务定时器,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
功能介绍
定时器顾名思义就是在某个特定的时间去执行一些任务,现代的应用程序早已不是以前的那些由简单的增删改查拼凑而成的程序了,高复杂性早已是标配,而任务的定时调度与执行也是对程序的基本要求了。通过时间表达式来进行调度和执行的一类任务被称为定时任务,很多业务需求的实现都离不开定时任务。
在javascript中要实现定时任务也是很简单的,可以选择插件,也可以自己写一个简单的定时任务,这里就个给大家写一个简单的 setInterval() 循环定时任务。功能有,启动定时任务、停止定任务、添加定时任务、清除定时任务、执行定时器的方法。
实现调用演示
定义两个方法 有参和无参
function a1(value = "") { console.log("定时任务被调用了 携带的参数==>>", value) } function a2() { console.log("定时任务被调用了 我是无参数") }
实现定时任务
let daily_time = { func: a1, parm: "我是每秒", year: "*", month: "*", date: "*", hours: "*", minutes: "*", seconds: "*" } let monthly_transaction = { func: a2, parm: null, year: "*", month: "*", date: "*", hours: "*", minutes: "1", seconds: "*" } let monthly_summary = { func: a1, parm: "我是每小时 1分 1秒", year: "*", month: "*", date: "*", hours: "*", minutes: "1", seconds: "1" } addTimer(daily_time) addTimer(monthly_transaction) addTimer(monthly_summary) startTimer()
创建定时任务js 代码文件 复制使用即可
bg-timer.js
// 缓存定时任务// {// func 方法名// parm 方法参数// year 年// month 月// date 日// hours 时// minutes 分// seconds 秒// }// * 表示每刻都执行 数字 表示定时这个时间执行var timer_list = []var is_timer = null// 启动function startTimer() { console.log("启动定时任务") if (!is_timer) { timeoutFunc() }}// 停止function stopTimer() { console.log("停止定时任务") if (is_timer) { clearInterval(is_timer); is_timer = null }}// 清除定时任务function cleanTimer() { stopTimer() timer_list = []}// 添加定时任务function addTimer(item = {}) { let n = { "func": item.func || null, "parm": item.parm || null, "year": item.year || "*", "month": item.month || "*", "date": item.date || "*", "hours": item.hours || "*", "minutes": item.minutes || "*", "seconds": item.seconds || "*" } timer_list.push(n)}function timeoutFunc() { if (is_timer) { return } is_timer = setInterval(function() { let da = new Date() let fullYear = (da.getFullYear()).toString() let month = (da.getMonth()).toString() let dat = (da.getDate()).toString() let hours = (da.getHours()).toString() let minutes = (da.getMinutes()).toString() let seconds = (da.getSeconds()).toString() // console.log("定时......",timer_list) // console.log("年:", fullYear) // console.log("月:", month) // console.log("日:", dat) // console.log("时:", hours) // console.log("分:", minutes) // console.log("秒:", seconds) for (let i in timer_list) { let item = timer_list[i] if (item.year != "*" && item.year != fullYear) { continue } if (item.month != "*" && item.month != month) { continue } if (item.date != "*" && item.date != dat) { continue } if (item.hours != "*" && item.hours != hours) { continue } if (item.minutes != "*" && item.minutes != minutes) { continue } if (item.seconds != "*" && item.seconds != seconds) { continue } console.log("调用定时任务", item) if (item.func && item.parm) { item.func(item.parm) } else { item.func() } } }, 1000)}
以上是“JavaScript如何实现手写原生任务定时器”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网行业资讯频道!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341