返回顶部
首页 > 资讯 > 精选 >web前端必须要掌握的定时任务有哪些
  • 668
分享到

web前端必须要掌握的定时任务有哪些

2023-07-05 07:07:54 668人浏览 八月长安
摘要

这篇文章主要介绍了web前端必须要掌握的定时任务有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇WEB前端必须要掌握的定时任务有哪些文章都会有所收获,下面我们一起来看看吧。 一、无处不在的定时任务定时任务,

这篇文章主要介绍了web前端必须要掌握的定时任务有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇WEB前端必须要掌握的定时任务有哪些文章都会有所收获,下面我们一起来看看吧。

一、无处不在的定时任务

定时任务,简单的理解就是多久后做什么,每隔多久做什么 。你是否感觉到了,其实定时任务是一个无处不在的东西,

比如电商平台的秒杀倒计时,每隔一秒就要执行一次,给你一种快要结束的紧迫感;比如我们从12306买车票,支付页的倒计时,每隔一秒就会告诉你,你的订单再不支付,票就不属于;比如产品人员告诉我们,每天晚上12点,要备份A表的数据;比如页面加完成后的1分钟后,自动跳转到其他某个页面去。

再比如HR告诉你,下午3点去一下会议室,有重要的事情要谈;比如每天9点你都不得不开始工作,迟到就不行;比如每天9:30都会开早会,组长总是风雨无阻,你不去他就看你不顺眼;比如每个月15号才会发工资,早一天都不会给你;比如65岁才退休,他不管你35岁到65岁之间干啥去了,也不管你是不是有公司嫌你35岁是大龄码农了。

这都是定时器,他会在固定的时间告诉你,你必须去做这件事,程序中有代码去控制,生活中有一只无形的手,你看不见,他却控制着你。

二、setTimeout的使用

web前端必须要掌握的定时任务有哪些

1. setTimeout的使用场景

setTimeout的使用场景规定为多久后执行什么,只执行一次。今天我们简单实现一个场景,场景规定在页面在加载完成之初不去加载某些东西,以减少首次加载的内容,降低首屏渲染的压力。当首屏组件加载完成之后的500毫秒,我们才去加载一些额外的东西。

Vue为例,例如首屏都放在了a.vue下,我们知道mounted生命周期可以表示这个组件DOM已加载完成,但组件加载完成,不代表图片和请求都已完成渲染了,所以我们预留了500毫秒,代码如下:

。。。 // 表示a.vue其余代码mounted() {    let timeout1 = setTimeout(() => {        // 需要延迟做的事情        // 并且延迟完毕要清除setTimeout        timeout1 = null;        window.clearTimeout(timeout1);    }, 500)},

2. 替代setInterval

很多时候我们不建议使用setInterval,这个原因下面说,虽然setTimeout是单次执行,但执行完了再在里面执行一次不就成了多次执行了嘛。

例如我们实现一个累加器,从0开始累加,超级棒的代码就像下面这样,是不是很棒,我的代码又不是不能跑,就算代码不能跑,我能跑得了呗。

var num = 0;setTimeout(() => {    num += 1;    setTimeout(() => {        num += 1;        setTimeout(() => {            num += 1;            ......            setTimeout(() => {                num += 1;            }, 970)        }, 970)    }, 970)}, 970)

但如果由于某些原因自己需要这份工作呢,自己跑不了,那就得把代码修改一下,让他不这么棒,变得辣鸡一些

var num = 0;function timeoutFn() {   setTimeout(() => {      num += 1;      timeoutFn();   }, 970)   console.log('经海路大白狗看一下num吧', num);}timeoutFn();

三、setInterval的使用

web前端必须要掌握的定时任务有哪些

1. setInterval的使用场景

很显然,setInterval强调多次,定时的去执行。比如定时累加器,比如定时轮训获取而不用Socket长链接,比如我们常见的轮播图3秒动一次。今天我们不做数字累加1的场景,那样太low了,我们做一个累加13的,而且当数值累加到大于等于100的时候再重新从0开始往上累加。

有没有发现狗哥博客的一个特点,我不断的在强调项目场景,项目场景,就是希望你不要把知识点孤立起来,知识点是要用于实战的,我们学再多开发知识点最终都是要走向公司去挣工资的。

var num = 0;setInterval(() => {   if (num >= 100) {        num = 0;   }  num += 13;}, 970)

2.  项目中会遇到的问题

由于浏览器和setInterval的特性。setInterval本身他创建的时候就在堆内存中进行了存储,队列在内存中一直存在,也保证了到下一个时间可以准时的执行,而结合浏览器的特性,浏览器发现这个堆内存后,进行了一定的优化处理。当你的浏览器页签不处于屏幕最上方的时候,浏览器则会将这个定时任务进行挂起操作,等这个浏览器页签再恢复到最上层的时候,浏览器再恢复其执行。

所以我们会经常发现一个问题,例如轮播图正在准时3秒动一次,然后浏览器被切走了,等你隔一段时间回来后呢,轮播图就像疯了一样的转动,然后再继续恢复为3秒一动;又或者是在iOS还是什么环境下来着,我记得当时是做一个倒计时的功能。当浏览器切走之前还剩12分钟,等浏览器切走之后呢,倒计时就不动了,等过了2分钟再切回来的时候,发现还是12分钟,又开始倒计时。

其实这个时候可以检测当前浏览器是否处于用户眼前(或者说是否被切走了),用这个代码来判断:

var countSecondFn = null;function GoOnCount() {    countSecondFn = setInterval(() => {        // 任务执行    })}document.addEventListener('visibilitychange',function(){   if(document.visibilityState=='hidden'){      window.clearInterval(countSecondFn);      countSecondFn = null;    }else if(document.visibilityState=='visible'){      goOnCount();     }});

所以很多时候,我们更希望用setTimeout的递归来替换掉setInterval的执行,减少更多的问题。

四、node-schedule的使用

1. node-schedule的使用场景

node-schedule目前主要用于node服务端,例如我们的一些页面,数据是配置出来的,那么就没有必要每次都去请求数据库,再返回给前端,可以定时一下,几分钟发送一次请求即可;再比如我们每次升级上线,为了保证一个良好的性能,html可能会部署在服务端,而静态资源则部署在另外的服务器。这样静态资源从v1.0升级到v1.1,则可以定时的去获取配置平台的版本号,然后动态拼接到HTML页面上,以保证可以每次升级拿到最新的静态资源。

但node-schedule和setInterval有本质上的区别。node-schedule更强调哪一天哪个小时,哪一分钟,哪一秒钟准确的去执行。就像我们经常被告知你明天早上9点去做一件什么事情,每天晚上9点你才可以下班。这样的场景,恐怕setInterval不能够胜任了。

2.  简单使用node-schedule

例如每到10分(3点10分、8点10分。。。12点10分)的时候,我们去请求一下数据,第一次请求到的数据进行缓存处理,再次请求到的数据与老数据进行对比,如果无更新则继续用缓存数据,如果有更新则利用新数据。

const schedule = require('node-schedule');let job = schedule.scheduleJob('* 10 * * * *', () => { axios(url, data, (res) => {    // 与缓存数据对比    // 后者再犯个懒,不对比,每次都用新数据,请求异常了再用缓存数据 })});

3. 执行钥匙Corn

上一段代码中的   * 10 * * * *   呢,就是所谓node-schedule的定时钥匙,这6个星号从左到右表示:秒 分 小时 天 月 年 ,这样看是不是就更明白他的准确性和与setInterval的区别了。

关于“web前端必须要掌握的定时任务有哪些”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“web前端必须要掌握的定时任务有哪些”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

--结束END--

本文标题: web前端必须要掌握的定时任务有哪些

本文链接: https://lsjlt.com/news/350349.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • web前端必须要掌握的定时任务有哪些
    这篇文章主要介绍了web前端必须要掌握的定时任务有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇web前端必须要掌握的定时任务有哪些文章都会有所收获,下面我们一起来看看吧。 一、无处不在的定时任务定时任务,...
    99+
    2023-07-05
  • 【整理总结】前端必须要掌握的3种定时任务
    比如电商平台的秒杀倒计时,每隔一秒就要执行一次,给你一种快要结束的紧迫感;比如我们从12306买车票,支付页的倒计时,每隔一秒就会告诉你,你的订单再不支付,票就不属于;比如产品人员告诉我们,每天晚上12点,要备份A表的数据;比如页面加完成...
    99+
    2023-05-14
    javascript 定时任务
  • 前端必须要掌握CSS3的属性有哪些
    小编给大家分享一下前端必须要掌握CSS3的属性有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1. Border-radiu...
    99+
    2024-04-02
  • 学习web前端,必须要掌握的CSS原理
    从事Web前端开发的人都与CSS打交道很多,有的人也许不知道CSS是怎么去工作的,写出来的CSS浏览器是怎么样去解析的呢?当这个成为我们提高CSS水平的一个瓶颈时,是否应该多了解一下呢?我还是要推荐下我自己创建的web前端资料分享群6067...
    99+
    2023-06-03
  • 中级前端工程师必须要掌握的JavaScript技巧有哪些
    这篇文章主要介绍“中级前端工程师必须要掌握的JavaScript技巧有哪些”,在日常操作中,相信很多人在中级前端工程师必须要掌握的JavaScript技巧有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单...
    99+
    2024-04-02
  • 学redis必须要掌握的知识点有哪些
    这篇文章主要介绍学redis必须要掌握的知识点有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!关于redis你必须要掌握的8个知识如下:1、redis是什么redis是一种支持K...
    99+
    2024-04-02
  • Web前端工程师要掌握哪些技能
    随着互联网的飞速发展,Web前端开发已经成为了一个非常热门的专业方向。那么,想要成为一名优秀的Web前端开发工程师,究竟需要学习哪些技能呢?下面让我们来一一剖析:HTML/CSS基础知识HTML(超文本标记语言)和CSS(样式表)是Web前...
    99+
    2023-05-14
  • Redis中必须要掌握的20个问题有哪些
    今天就跟大家聊聊有关Redis中必须要掌握的20个问题有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。给大家分享20个必知必会、必须要掌握的Re...
    99+
    2024-04-02
  • 前端CSS必须要学的知识点有哪些
    本文小编为大家详细介绍“前端CSS必须要学的知识点有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“前端CSS必须要学的知识点有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识...
    99+
    2024-04-02
  • web前端面试需要掌握哪些知识点
    本篇内容主要讲解“web前端面试需要掌握哪些知识点”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“web前端面试需要掌握哪些知识点”吧!  基本功考察  关于Html  1. html语义化标签的...
    99+
    2023-06-04
  • 学习黑客必须要掌握的DOS命令有哪些
    这篇文章主要介绍学习黑客必须要掌握的DOS命令有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1 黑客基础之DOS (最齐全)   net use \\...
    99+
    2023-06-09
  • 小白要学好Web前端需要掌握哪些方法
    本篇内容介绍了“小白要学好Web前端需要掌握哪些方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、di...
    99+
    2024-04-02
  • AJAX应用中必须要掌握的重点知识有哪些
    小编给大家分享一下AJAX应用中必须要掌握的重点知识有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!AJAX是什么是Asyn...
    99+
    2024-04-02
  • SEOer必须掌握的标配技术有哪些
    这篇文章主要为大家展示了“SEOer必须掌握的标配技术有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SEOer必须掌握的标配技术有哪些”这篇文章吧。  首先,认识网页代码是基础  这里所讲...
    99+
    2023-06-10
  • 前端开发需要掌握的技术有哪些
    这篇文章主要介绍了前端开发需要掌握的技术有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前端开发需要掌握的技术:1、绘制原型图,实现效果图;2、与设计师的沟通和项目的参与...
    99+
    2023-06-06
  • 有哪些必须要掌握的数据库与sql基础知识
    这篇文章主要讲解了“有哪些必须要掌握的数据库与sql基础知识”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“有哪些必须要掌握的数据库与sql基础知识”吧!数据...
    99+
    2024-04-02
  • Web前端程序员必须会用的CSS技巧有哪些
    小编给大家分享一下Web前端程序员必须会用的CSS技巧有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、元素的margin...
    99+
    2024-04-02
  • 必须掌握的数据库面试题有哪些
    本篇内容介绍了“必须掌握的数据库面试题有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、为什么使用数...
    99+
    2024-04-02
  • Linux必须掌握的shell脚本基础有哪些
    Linux必须掌握的shell脚本基础有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 shell 基本语法shell:shell 是一个命令解释器,它在操作系统的最外层,...
    99+
    2023-06-05
  • Java程序员必须掌握的注解有哪些
    这篇文章主要讲解了“Java程序员必须掌握的注解有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java程序员必须掌握的注解有哪些”吧!划重点自 JDK5 推出以来,注解已成为Java生...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作