一种避免多个异步方法重复执行的方法、装置及电子设备与流程

文档序号:16401114发布日期:2018-12-25 20:07阅读:236来源:国知局
一种避免多个异步方法重复执行的方法、装置及电子设备与流程

本发明涉及计算机软件技术领域,尤其是涉及一种避免多个异步方法重复执行的方法、装置及电子设备。

背景技术

随着移动浪潮的兴起,各种app层出不穷,极速的业务扩展提升了团队对开发效率的要求,native和html5前端开发交互的hybrid通信,方便前端开发者在webview中直接调用原生组件,若与app中的webview交互的某个hybrid方法被多次执行,会存在多个重复方法执行的问题,造成内存占用过大,再严重则会内存溢出。

现有技术中,大部分的hybrid方法,为了保证按顺序执行,前端的逻辑都写在回调中,而js的回调是异步的,也就是说不能保证都是按顺序执行,若多个一样的方法被多次执行,就会浪费用户内存,导致手机卡顿。

综上,现有技术存在多个一样的异步方法重复执行的技术问题。



技术实现要素:

有鉴于此,本发明的目的在于提供一种避免多个异步方法重复执行的方法、装置及电子设备,以缓解现有技术中无法避免多个一样的异步方法重复执行的技术问题。

第一方面,本发明实施例提供了一种避免多个异步方法重复执行的方法,所述方法包括:

获取进入回调的指示信息,其中,所述指示信息用于指示调用hybrid方法的信息;

根据所述hybrid方法的执行状态标志位顺序执行所述hybrid方法。

结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,根据所述hybrid方法的执行状态标志位顺序执行所述hybrid方法包括:

判断所述执行状态标志位中是否存在已执行标志位;

如果存在,则执行与所述已执行标志位相对应的hybrid方法的回调任务。

结合第一方面,本发明实施例提供了第一方面的第二种可能的实施方式,其中,根据所述hybrid方法的执行状态标志位顺序执行所述hybrid方法还包括:

如果不存在,则根据所述执行状态标志位判断是否有hybrid方法执行中;

如果没有,则创建空的任务队列,并将当前的hybrid方法的回调任务存入所述任务队列。

结合第一方面,本发明实施例提供了第一方面的第三种可能的实施方式,其中,根据所述hybrid方法的执行状态标志位顺序执行所述hybrid方法还包括:

如果有,则将目标hybrid方法的执行状态标志位设置为执行中标志位,其中,所述目标hybrid方法为执行中的hybrid方法;

执行所述目标hybrid方法,并记录用户状态;

将所述用户状态传入回调,并执行回调任务。

结合第一方面,本发明实施例提供了第一方面的第四种可能的实施方式,其中,在将所述用户状态传入回调,并执行回调任务之后,所述方法还包括:

判断在所述任务队列中是否存在未执行回调任务;

如果存在所述未执行回调任务,则执行所述未执行回调任务,并去除所述hybrid方法的执行中标志位。

结合第一方面,本发明实施例提供了第一方面的第五种可能的实施方式,其中,所述方法还包括:

如果不存在所述未执行回调任务,则退出所述避免多个异步方法重复执行的方法。

第二方面,本发明实施例还提供一种避免多个异步方法重复执行的装置,包括:

获取模块,用于获取进入回调的指示信息,其中,所述指示信息用于指示调用hybrid方法的信息;

执行模块,用于根据所述hybrid方法的执行状态标志位顺序执行所述hybrid方法。

结合第二方面,本发明实施例提供了第二方面的第一种可能的实施方式,其中,执行模块包括:

第一判断单元,用于判断所述执行状态标志位中是否存在已执行标志位;

第一执行单元,如果存在,则执行与所述已执行标志位相对应的hybrid方法的回调任务。

第三方面,本发明实施例还提供了一种电子设备,包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面中所述的方法的步骤。

第四方面,本发明实施例还提供了一种具有处理器可执行的非易失的程序代码的计算机可读介质,所述程序代码使所述处理器执行上述第一方面中所述的方法。

在本发明实施例中,首先获取进入回调的指示信息,然后根据hybrid方法的执行状态标志位顺序执行hybrid方法。通过上述描述可知,该方法能够使得hybrid方法根据执行状态标志位顺序执行,有效避免了多个一样的异步方法重复执行,进而减少了内存空间的占用,有效的提高了html5页面在app中的性能,带来了更好的用户体验。

本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例的一种避免多个异步方法重复执行的方法的流程图;

图2为本发明实施例的根据hybrid方法的执行状态标志位顺序执行hybrid方法的流程图;

图3为本发明实施例的根据执行状态标志位判断是否有目标hybrid方法执行中的流程图;

图4为本发明实施例的将用户状态传入回调并执行回调任务之后的流程图;

图5为本发明实施例的一种避免多个异步方法重复执行的装置的功能模块图;

图6为本发明实施例的一种电子设备的示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一:

图1是根据本发明实施例的一种避免多个异步方法重复执行的方法,如图1所示,该方法包括如下步骤:

步骤s101,获取进入回调的指示信息,其中,指示信息用于指示调用hybrid方法的信息;

步骤s102,根据hybrid方法的执行状态标志位顺序执行hybrid方法。

在html5与native的通信中,前端开发者与app开发者会制定一种交互方式,简称hybrid方法,方便前端开发者在webview中直接调用原生组件的方法。

当获取进入回调的指示信息,调用与app中的webview交互的hybrid方法时,根据hybrid方法的执行状态标志位顺序执行hybrid方法。

在本发明实施例中,首先获取进入回调的指示信息,然后根据hybrid方法的执行状态标志位顺序执行hybrid方法。通过上述描述可知,该方法能够使得hybrid方法根据执行状态标志位顺序执行,有效避免了多个一样的异步方法重复执行,进而减少了内存空间的占用,有效的提高了html5页面在app中的性能,带来了更好的用户体验。

在本实施例中,如图2所示,根据hybrid方法的执行状态标志位顺序执行hybrid方法包括:

步骤s201,判断执行状态标志位中是否存在已执行标志位;

步骤s202,如果存在,则执行与已执行标志位相对应的hybrid方法的回调任务;

步骤s203,如果不存在,则根据执行状态标志位判断是否有hybrid方法执行中。

当一个hybrid方法执行中就会在浏览器全局的window对象中声明一个执行中标志位,当方法执行结束后会解除标志位,标志位保存在全局变量中,每一个状态的变更都会被记录存储。

调用hybrid方法时,判断hybrid方法在全局变量中是否存在已执行的标志位,如果存在已执行标志位,则执行与已执行标志位相对应的hybrid方法的回调任务,回调指的是把要执行的方法直接执行,因为要判断的变量已经完成了。

每当一个hybrid方法执行时,会在浏览器window中创建一个全局变量,如果不存在已执行标志位,即在全局变量中没有与hybrid方法相对应的已执行标志位,则根据全局变量中执行状态标志位判断是否有hybrid方法执行中。

在本实施例中,如图3所示,根据hybrid方法的执行状态标志位顺序执行hybrid方法还包括:

步骤s301,如果没有,则创建空的任务队列,并将当前的hybrid方法的回调任务存入任务队列;

步骤s302,如果有,则将目标hybrid方法的执行状态标志位设置为执行中标志位,其中,目标hybrid方法为执行中的hybrid方法;

步骤s303,执行目标hybrid方法,并记录用户状态;

步骤s304,将用户状态传入回调,并执行回调任务。

具体地,如果全局变量中执行状态标志位没有执行中标志位,也就是没有hybrid方法执行中,则创建空的任务队列,并将当前的hybrid方法的回调任务存入任务队列,任务队列是存储于浏览器window对象里的一个数组,所有环境都能访问到。

如果全局变量中执行状态标志位有执行中标志位,也就是有hybrid方法执行中,则将执行中的hybrid方法(即目标hybrid方法)的执行状态标志位设置为执行中标志位;

执行目标hybrid方法,并记录用户状态,用户状态根据业务需求不同,在不同场景下有不同的因素,包括用户的类别、用户的id,执行目标hybrid方法后,将用户状态以回调函数的形式返回,带给函数执行上下文,即将用户状态传入回调,并执行回调任务。。

在本实施例中,如图4所示,在将用户状态传入回调,并执行回调任务之后,还包括以下步骤:

步骤s401,判断在任务队列中是否存在未执行回调任务;

步骤s402,如果存在未执行回调任务,则执行未执行回调任务,并去除hybrid方法的执行中标志位;

步骤s403,如果不存在未执行回调任务,则退出避免多个异步方法重复执行的方法。

具体地,用户状态以回调函数的形式返回后,判断任务队列中是否存在未执行的回调任务,如果存在,则执行未执行的回调任务,并去除hybrid方法的执行中标志位,如果不存在,则退出避免多个异步方法重复执行的方法。

该方法避免了同一个方法多次短时间调用,记录下用户的状态,更有效提高html5页面在app中的性能,提高了用户体验,相比于原有的通信方式,减少了空间的占用,提高了性能体验。

发明人对本发明的方法进行了验证:其中,在不使用该方法的情况下,使用同个hybrid异步方法判断用户状态,并记录页面渲染时间和内存使用情况;同样,运用本发明的方法,把所有方法放入本发明方法的回调任务中,执行所有操作,并记录页面渲染时间和内存使用情况,经过多次重复执行,取平均值,对比上述两种方法中的页面渲染时间,发现本发明的方法节省了大量的内存空间和时间,节省了页面渲染时间。

实施例二:

本发明实施例还提供了一种避免多个异步方法重复执行的装置,该避免多个异步方法重复执行的装置主要用于执行本发明实施例上述内容所提供的避免多个异步方法重复执行的方法,以下对本发明实施例提供的避免多个异步方法重复执行的装置做具体介绍。

图5是根据本发明实施例的一种避免多个异步方法重复执行的装置的示意图,如图5所示,该装置主要包括获取模块10和执行模块20,其中:

获取模块,用于获取进入回调的指示信息,其中,指示信息用于指示调用hybrid方法的信息;

执行模块,用于根据hybrid方法的执行状态标志位顺序执行hybrid方法。

在本发明实施例中,首先获取进入回调的指示信息,然后根据hybrid装置的执行状态标志位顺序执行hybrid装置。通过上述描述可知,该装置能够使得hybrid方法根据执行状态标志位顺序执行,有效避免了多个一样的异步方法重复执行,进而减少了内存空间的占用,有效的提高了html5页面在app中的性能,带来了更好的用户体验。

可选地,执行模块包括:

第一判断单元,用于判断执行状态标志位中是否存在已执行标志位;

第一执行单元,如果存在,则执行与已执行标志位相对应的hybrid方法的回调任务。

可选地,执行模块还包括:

第二判断单元,如果不存在,则根据执行状态标志位判断是否有hybrid方法执行中;

创建单元,如果没有,则创建空的任务队列,并将当前的hybrid方法的回调任务存入任务队列。

可选地,执行模块还包括:

设置单元,如果有,则将目标hybrid方法的执行状态标志位设置为执行中标志位,其中,目标hybrid方法为执行中的hybrid方法;

记录单元,用于执行目标hybrid方法,并记录用户状态;

第二执行单元,用于将用户状态传入回调,并执行回调任务。

可选地,执行模块还包括:

第三判断单元,用于判断在任务队列中是否存在未执行回调任务;

第三执行单元,如果存在未执行回调任务,则执行未执行回调任务,并去除hybrid方法的执行中标志位。

可选地,执行模块还包括:

退出单元,如果不存在未执行回调任务,则退出避免多个异步方法重复执行的方法。

本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。

实施例三:

本发明实施例提供了一种电子设备,参考图6,该电子设备包括:处理器30,存储器31,总线32和通信接口33,处理器30、通信接口33和存储器31通过总线32连接;处理器30用于执行存储器31中存储的可执行模块,例如计算机程序。处理器执行极端及程序时实现如方法实施例中描述的方法的步骤。

其中,存储器31可能包含高速随机存取存储器(ram,randomaccessmemory),也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。通过至少一个通信接口33(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。

总线32可以是isa总线、pci总线或eisa总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

其中,存储器31用于存储程序,处理器30在接收到执行指令后,执行程序,前述本发明实施例任一实施例揭示的流过程定义的装置所执行的方法可以应用于处理器30中,或者由处理器30实现。

处理器30可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器30中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器30可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessing,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现成可编程门阵列(field-programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器31,处理器30读取存储器31中的信息,结合其硬件完成上述方法的步骤。

本发明实施例所提供的一种避免多个异步方法重复执行的方法、装置及电子设备的计算机程序产品,包括存储了处理器可执行的非易失的程序代码的计算机可读存储介质,程序代码包括的指令可用于执行前面方法实施例中的方法,具体实现可参见方法实施例,在此不再赘述。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。

在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。

所述功能若以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1