一种定时器实现方法、装置、设备和介质制造方法及图纸

技术编号:33633456 阅读:11 留言:0更新日期:2022-06-02 01:41
本申请提供了一种定时器实现方法、装置、设备和介质,其中,方法包括:调用预先构建的目标模拟对象中的定时器方法,根据传入的预设回调函数和预设定时时间进行定时任务处理,并返回定时器标识。本申请提供的定时器实现方法,目标模拟对象具有由系统决定预设回调函数的执行时机的功能,从而根据目标模拟对象中的定时器方法进行定时任务处理,可以使预设回调函数在约定的预设定时时间执行。数在约定的预设定时时间执行。数在约定的预设定时时间执行。

【技术实现步骤摘要】
一种定时器实现方法、装置、设备和介质


[0001]本申请涉及计算机
,特别是涉及一种定时器实现方法、装置、设备和介质。

技术介绍

[0002]目前,在JavaScript中,通常使用setTimeout函数或setInterval函数进行定时。setTimeout函数和setInterval函数均为异步执行函数,在编写完成后将其加入异步队列。
[0003]由于浏览器为单线程,其需要在执行完同步队列中的任务,再执行异步队列中的任务,也就是说,如果同步队列中仍有未执行完毕的任务,将导致异步队列中的setTimeout函数和setInterval函数无法在约定的时间执行,从而setTimeout函数和setInterval函数中的回调函数无法在约定的时间执行。例如,浏览器主线程正在执行同步队列中的未执行任务,该未执行任务为上百万甚至上亿条数据,使得主线程的执行时间超过1秒,若异步队列中的setTimeout函数需要每隔1秒调用一个回调函数,则由于主线程的执行时间超过1秒,导致异步队列中的setTimeout函数无法在约定的1秒后执行,从而setTimeout函数中的回调函数无法在约定的1秒后执行。

技术实现思路

[0004]有鉴于此,本申请提供了一种定时器实现方法、装置、设备和介质,用于解决现有技术setTimeout函数和setInterval函数无法在约定的时间执行的问题,其技术方案如下:
[0005]一种定时器实现方法,包括:
[0006]调用预先构建的目标模拟对象中的定时器方法;
[0007]根据传入的预设回调函数和预设定时时间进行定时任务处理,并返回定时器标识;
[0008]其中,目标模拟对象具有由系统决定预设回调函数的执行时机的功能,目标模拟对象中包括标识保存方法和定时器方法,标识保存方法用于保存定时器方法对应的定时器标识,定时器方法用于创建定时器标识并基于标识保存方法保存定时器标识,以及,在达到预设定时时间时执行预设回调函数,在执行完预设回调函数时,返回定时器标识。
[0009]可选的,目标模拟对象还包括定时运行方法,定时运行方法包括类型参数、回调函数参数和定时时间参数,类型参数包括定时器类型和/或倒计时类型;
[0010]定时器实现方法还包括:
[0011]在类型参数为倒计时类型时清除定时器标识指示的倒计时。
[0012]可选的,目标模拟对象中还包括定时器清除方法,定时器清除方法用于调用cancelAnimationFrame函数将定时器标识指示的定时器清除;
[0013]在类型参数为定时器类型时,定时器实现方法还包括:
[0014]调用目标模拟对象中的定时器清除方法,根据传入的定时器标识,将定时器标识指示的定时器清除。
[0015]可选的,构建目标模拟对象的过程,包括:
[0016]将定时器标识初始化为空;
[0017]基于requestAnimationFrame函数创建标识保存方法;
[0018]创建定时运行方法;
[0019]基于定时运行方法创建定时器方法;
[0020]基于cancelAnimationFrame函数创建定时器清除方法。
[0021]可选的,定时运行方法的创建步骤,包括:
[0022]记录当前时刻,作为定时运行方法的创建时刻;
[0023]创建定时器标识;
[0024]创建循环函数,其中,在循环函数的每次循环中,基于标识保存方法保存定时器标识,并判断当前时刻与创建时刻之差是否大于或等于预设定时时间,若是,则执行回调函数,在执行完预设回调函数时,若类型参数为倒计时类型,则清除定时器标识指示的倒计时;
[0025]再次基于标识保存方法保存定时器标识,并返回定时器标识。
[0026]可选的,定时器方法包括:setTimeout方法和/或setInterval方法,定时器清除方法包括:clearTimeout方法和/或clearInterval方法。
[0027]一种定时器实现装置,包括:定时器方法调用模块和定时器实现模块;
[0028]定时器方法调用模块,用于调用预先构建的目标模拟对象中的定时器方法;
[0029]定时器实现模块,用于根据传入的预设回调函数和预设定时时间进行定时任务处理,并返回定时器标识;
[0030]其中,目标模拟对象具有由系统决定预设回调函数的执行时机的功能,目标模拟对象中包括标识保存方法和定时器方法,标识保存方法用于保存定时器方法对应的定时器标识,定时器方法用于创建定时器标识并基于标识保存方法保存定时器标识,以及,在达到预设定时时间时执行预设回调函数,在执行完预设回调函数时,返回定时器标识。
[0031]可选的,目标模拟对象还包括定时运行方法,定时运行方法包括类型参数、回调函数参数和定时时间参数,类型参数包括定时器类型和/或倒计时类型;
[0032]定时器实现装置还包括:倒计时清除模块;
[0033]倒计时清除模块,用于在类型参数为倒计时类型时清除定时器标识指示的倒计时。
[0034]一种定时器实现设备,包括存储器和处理器;
[0035]存储器,用于存储程序;
[0036]处理器,用于执行程序,实现如上述任一项的定时器实现方法的各个步骤。
[0037]一种可读存储介质,其上存储有计算机程序,其特征在于,计算机程序被处理器执行时,实现如上述任一项的定时器实现方法的各个步骤。
[0038]经由上述的技术方案可知,本申请提供的定时器实现方法,调用预先构建的目标模拟对象中的定时器方法,根据传入的预设回调函数和预设定时时间进行定时任务处理,并返回定时器标识。本申请中,目标模拟对象具有由系统决定预设回调函数的执行时机的功能,从而根据目标模拟对象中的定时器方法进行定时任务处理,可以使预设回调函数在约定的预设定时时间执行。
附图说明
[0039]为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0040]图1为本申请实施例提供的JavaScript进程时间线的示意图;
[0041]图2为本申请实施例提供的定时器实现方法的流程示意图;
[0042]图3为本申请实施例提供的定时器实现装置的结构示意图;
[0043]图4为本申请实施例提供的定时器实现设备的硬件结构框图。
具体实施方式
[0044]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。...

【技术保护点】

【技术特征摘要】
1.一种定时器实现方法,其特征在于,包括:调用预先构建的目标模拟对象中的定时器方法;根据传入的预设回调函数和预设定时时间进行定时任务处理,并返回定时器标识;其中,所述目标模拟对象具有由系统决定所述预设回调函数的执行时机的功能,所述目标模拟对象中包括标识保存方法和所述定时器方法,所述标识保存方法用于保存所述定时器方法对应的所述定时器标识,所述定时器方法用于创建所述定时器标识并基于所述标识保存方法保存所述定时器标识,以及,在达到所述预设定时时间时执行所述预设回调函数,在执行完所述预设回调函数时,返回所述定时器标识。2.根据权利要求1所述的定时器实现方法,其特征在于,所述目标模拟对象还包括定时运行方法,所述定时运行方法包括类型参数、回调函数参数和定时时间参数,所述类型参数包括定时器类型和/或倒计时类型;所述定时器实现方法还包括:在所述类型参数为所述倒计时类型时清除所述定时器标识指示的倒计时。3.根据权利要求2所述的定时器实现方法,其特征在于,所述目标模拟对象中还包括定时器清除方法,所述定时器清除方法用于调用cancelAnimationFrame函数将所述定时器标识指示的定时器清除;在所述类型参数为所述定时器类型时,所述定时器实现方法还包括:调用所述目标模拟对象中的所述定时器清除方法,根据传入的所述定时器标识,将所述定时器标识指示的定时器清除。4.根据权利要求3所述的定时器实现方法,其特征在于,所述目标模拟对象的构建步骤,包括:将所述定时器标识初始化为空;基于requestAnimationFrame函数创建所述标识保存方法;创建所述定时运行方法;基于所述定时运行方法创建所述定时器方法;基于所述cancelAnimationFrame函数创建所述定时器清除方法。5.根据权利要求2~4任一项所述的定时器实现方法,其特征在于,所述定时运行方法的创建步骤,包括:记录当前时刻,作为所述定时运行方法的创建时刻;创建所述定时器标识;创建循环函数,其中,在所述循环函数的每次循环中,基于所述标识保存方法保存所述定时器标识,并判...

【专利技术属性】
技术研发人员:刘伟波
申请(专利权)人:海尔智家股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1