CN113742096B - 一种事件队列的实现方法及系统 - Google Patents
一种事件队列的实现方法及系统 Download PDFInfo
- Publication number
- CN113742096B CN113742096B CN202110795127.7A CN202110795127A CN113742096B CN 113742096 B CN113742096 B CN 113742096B CN 202110795127 A CN202110795127 A CN 202110795127A CN 113742096 B CN113742096 B CN 113742096B
- Authority
- CN
- China
- Prior art keywords
- event
- execution
- queue
- module
- event queue
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
Abstract
本发明提供本发明提供一种事件队列的实现方法及系统,其中方法包括:获取事件队列,判断所述事件队列是否为同步执行事件队列或异步执行事件队列或关系执行事件队列;若所述事件队列为同步执行事件队列,且所述事件模块的执行结果返回值不为空,返回执行中断钩子函数给调用层;若所述事件队列为异步执行事件队列,且所述事件模块的执行结果返回值不为空,返回执行并行结构钩子函数;若所述事件队列为关系执行事件队列,返回执行结束钩子函数给调用层。本发明提供的实现方式,复用性高,可读性高,不同的事件类型模块可以任意复用组合来达到不同的业务逻辑诉求,满足现代企业快速变化的业务需求和追求低成本的效益诉求。
Description
技术领域
本发明涉及Web前端技术领域,特别是涉及一种事件队列的实现方法及系统。
背景技术
随着Internet的快速发展,信息技术化的要求,企业越来越意识到,他们需要具有快速开发能力的低代码平台来帮助他们进行迅速的、高效的数字化转型,拖拽式配置UI,生命周期钩子执行业务事件片段等方式低代码平台核心能力,在处理事件片段方式上,不同的业务领域,对事件的类型和执行逻辑有不同的要求,而这些特殊的业务场景对低代码平台的整体设计和架构带来极大挑战,迫切需要一种灵活度高,扩展性高的钩子事件执行实现方案。
现有的低代码平台实现页面钩子事件,控件钩子事件大多数是提供固定钩子函数,支持编写事件代码切片插入的,代码切片里面实现大量复杂的业务处理,这种方式虽然相对稳定可控,平台只简单暴露钩子调用,所有内部逻辑由使用人员进行代码编写,但这种方式对使用人员编码能力要求较高,而且复用性差,带来大量重复工作量和维护成本,这种方式不能满足业务灵活多变的场景和企业使用低代码平台减低开发成本的诉求。
发明内容
现有的低代码平台实现页面钩子事件,大多数是提供固定钩子函数,支持编写代码切片,在切片代码里面实现大量复杂的业务处理,随着不同开发人员对同一个代码切片进行开发迭代,代码切片会变得庞大难以维护,不利于灵活多变的业务场景,本发明提供一种方法及系统,把钩子代码变为更轻量的事件模块,然后灵活组合达成特定业务逻辑。
本发明第一方面提供一种事件队列的实现方法,包括:
获取事件队列,将事件队列中的每个独立的事件模块放入数组中;
判断所述事件队列是否为同步执行事件队列或异步执行事件队列或关系执行事件队列;
若所述事件队列为同步执行事件队列,则每次从所述数组中提取一个事件模块,并对所述事件模块进行包装,判断所述事件模块的执行结果返回值是否为空,若所述事件模块的执行结果返回值不为空,中断未执行的事件模块包装过程,结束事件队列,返回执行中断钩子函数给调用层;
若所述事件队列为异步执行事件队列,则遍历并提取所述数组中每个事件模块,并对所述事件模块进行包装,判断所述事件模块的执行结果返回值是否为空,若所述事件模块的执行结果返回值不为空,将执行结束标记冒泡到事件队列的执行调用层,返回执行并行结构钩子函数;
若所述事件队列为关系执行事件队列,则每次从所述数组中提取一个事件模块,并对所述事件模块进行包装,事件模块执行结果返回值通过promise链式调用传入下个事件模块promise方法中,直到事件队列所有事件模块执行完毕,将执行结束标记冒泡到事件队列的执行调用层,返回执行结束钩子函数给调用层。
进一步地,所述若所述事件队列为同步执行事件队列,则每次从所述数组中提取一个事件模块,并对所述事件模块进行包装,判断所述事件模块的执行结果返回值是否为空之后,包括:
若所述事件模块的执行结果返回值为空,则队列为空,将执行结束标记冒泡到事件队列的执行调用层,返回执行结束钩子函数给调用层。
进一步地,所述若所述事件队列为同步执行事件队列,则每次从所述数组中提取一个事件模块,并对所述事件模块进行包装之后,包括:
解析事件结构字段,依次调用对应字段逻辑代码片段,得到事件模块执行结果。
进一步地,所述若所述事件队列为异步执行事件队列,则遍历并提取所述数组中每个事件模块,并对所述事件模块进行包装,判断所述事件模块的执行结果返回值是否为空之后,包括:
若所述事件模块的执行结果返回值为空,则队列为空,将执行结束标记冒泡到事件队列的执行调用层,返回执行结束钩子函数给调用层。
进一步地,所述若所述事件队列为异步执行事件队列,则遍历并提取所述数组中每个事件模块,并对所述事件模块进行包装之后,包括:
解析事件结构字段,依次调用对应字段逻辑代码片段,得到每个事件模块执行结果。
进一步地,所述若所述事件队列为关系执行事件队列,则每次从所述数组中提取一个事件模块,并对所述事件模块进行包装之后,包括:
解析事件结构字段,依次调用对应字段逻辑代码片段,得到事件模块执行结果。
本发明第二方面提供一种事件队列的实现系统,包括:
事件队列获取模块,用于获取事件队列,将事件队列中的每个独立的事件模块放入数组中;
事件队列类型判断模块,用于判断所述事件队列是否为同步执行事件队列或异步执行事件队列或关系执行事件队列;
若所述事件队列为同步执行事件队列,则每次从所述数组中提取一个事件模块,并对所述事件模块进行包装,判断所述事件模块的执行结果返回值是否为空,若所述事件模块的执行结果返回值不为空,中断未执行的事件模块包装过程,结束事件队列,返回执行中断钩子函数给调用层;
若所述事件队列为异步执行事件队列,则遍历并提取所述数组中每个事件模块,并对所述事件模块进行包装,判断所述事件模块的执行结果返回值是否为空,若所述事件模块的执行结果返回值不为空,将执行结束标记冒泡到事件队列的执行调用层,返回执行并行结构钩子函数;
若所述事件队列为关系执行事件队列,则每次从所述数组中提取一个事件模块,并对所述事件模块进行包装,事件模块执行结果返回值通过promise链式调用传入下个事件模块promise方法中,直到事件队列所有事件模块执行完毕,将执行结束标记冒泡到事件队列的执行调用层,返回执行结束钩子函数给调用层。
进一步地,所述若所述事件队列为同步执行事件队列,则每次从所述数组中提取一个事件模块,并对所述事件模块进行包装,判断所述事件模块的执行结果返回值是否为空之后,包括:
若所述事件模块的执行结果返回值为空,则队列为空,将执行结束标记冒泡到事件队列的执行调用层,返回执行结束钩子函数给调用层。
进一步地,所述若所述事件队列为同步执行事件队列,则每次从所述数组中提取一个事件模块,并对所述事件模块进行包装之后,包括:
解析事件结构字段,依次调用对应字段逻辑代码片段,得到事件模块执行结果。
进一步地,所述若所述事件队列为异步执行事件队列,则遍历并提取所述数组中每个事件模块,并对所述事件模块进行包装,判断所述事件模块的执行结果返回值是否为空之后,包括:
若所述事件模块的执行结果返回值为空,则队列为空,将执行结束标记冒泡到事件队列的执行调用层,返回执行结束钩子函数给调用层。
进一步地,所述若所述事件队列为异步执行事件队列,则遍历并提取所述数组中每个事件模块,并对所述事件模块进行包装之后,包括:
解析事件结构字段,依次调用对应字段逻辑代码片段,得到每个事件模块执行结果。
进一步地,所述若所述事件队列为关系执行事件队列,则每次从所述数组中提取一个事件模块,并对所述事件模块进行包装之后,包括:
解析事件结构字段,依次调用对应字段逻辑代码片段,得到事件模块执行结果。
本发明第三方面提供一种电子装置,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现上述任意一项所述的事件队列的实现方法。
本发明第四方面提供一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行上述任意一项所述的事件队列的实现方法。
与现有技术相比,本发明实施例的有益效果在于:
本发明提供一种事件队列的实现方法及系统,其中方法包括:获取事件队列,将事件队列中的每个独立的事件模块放入数组中;判断所述事件队列是否为同步执行事件队列或异步执行事件队列或关系执行事件队列;若所述事件队列为同步执行事件队列,则每次从所述数组中提取一个事件模块,并对所述事件模块进行包装,判断所述事件模块的执行结果返回值是否为空,若所述事件模块的执行结果返回值不为空,中断未执行的事件模块包装过程,结束事件队列,返回执行中断钩子函数给调用层;若所述事件队列为异步执行事件队列,则遍历并提取所述数组中每个事件模块,并对所述事件模块进行包装,判断所述事件模块的执行结果返回值是否为空,若所述事件模块的执行结果返回值不为空,将执行结束标记冒泡到事件队列的执行调用层,返回执行并行结构钩子函数;若所述事件队列为关系执行事件队列,则每次从所述数组中提取一个事件模块,并对所述事件模块进行包装,事件模块执行结果返回值通过promise链式调用传入下个事件模块promise方法中,直到事件队列所有事件模块执行完毕,将执行结束标记冒泡到事件队列的执行调用层,返回执行结束钩子函数给调用层。本发明提供的方法通过定义不同粒度的事件类型模块来界定业务处理范围,提供不同的执行事件队列类型来组合事件模块形成一组高稳定性,高可读性的业务逻辑模块,这种技术实现方式,复用性高,可读性高,不同的事件类型模块可以任意复用组合来达到不同的业务逻辑诉求,满足现代企业快速变化的业务需求和追求低成本的效益诉求。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施方式中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明某一实施例提供的一种事件队列的实现方法的流程图;
图2是本发明另一实施例提供的一种事件队列的实现方法的流程图;
图3是本发明又一实施例提供的一种事件队列的实现方法的流程图;
图4是本发明某一实施例提供的同步执行事件队列效果图;
图5是本发明某一实施例提供的异步执行事件队列效果图;
图6是本发明某一实施例提供的关系执行事件队列效果图;
图7是本发明某一实施例提供的一种事件队列的实现系统的装置图;
图8是本发明某一实施例提供的一种电子设备的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,文中所使用的步骤编号仅是为了方便描述,不对作为对步骤执行先后顺序的限定。
应当理解,在本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
第一方面。
请参阅图1-2,本发明提供一种事件队列的实现方法,包括:
S10、获取事件队列,将事件队列中的每个独立的事件模块放入数组中。
S20、判断所述事件队列是否为同步执行事件队列或异步执行事件队列或关系执行事件队列。
S311、若所述事件队列为同步执行事件队列,则每次从所述数组中提取一个事件模块,并对所述事件模块进行包装,判断所述事件模块的执行结果返回值是否为空,若所述事件模块的执行结果返回值不为空,中断未执行的事件模块包装过程,结束事件队列,返回执行中断钩子函数给调用层。
在某一具体实施方式中,还包括:
S312、若所述事件模块的执行结果返回值为空,则队列为空,将执行结束标记冒泡到事件队列的执行调用层,返回执行结束钩子函数给调用层。
在某一具体实施方式中,所述若所述事件队列为同步执行事件队列,则每次从所述数组中提取一个事件模块,并对所述事件模块进行包装之后,包括:
解析事件结构字段,依次调用对应字段逻辑代码片段,得到事件模块执行结果。
S321、若所述事件队列为异步执行事件队列,则遍历并提取所述数组中每个事件模块,并对所述事件模块进行包装,判断所述事件模块的执行结果返回值是否为空,若所述事件模块的执行结果返回值不为空,将执行结束标记冒泡到事件队列的执行调用层,返回执行并行结构钩子函数。
在某一具体实施方式中,还包括:
S322、若所述事件模块的执行结果返回值为空,则队列为空,将执行结束标记冒泡到事件队列的执行调用层,返回执行结束钩子函数给调用层。
在某一具体实施方式中,所述若所述事件队列为异步执行事件队列,则遍历并提取所述数组中每个事件模块,并对所述事件模块进行包装之后,包括:
解析事件结构字段,依次调用对应字段逻辑代码片段,得到每个事件模块执行结果。
S331、若所述事件队列为关系执行事件队列,则每次从所述数组中提取一个事件模块,并对所述事件模块进行包装,事件模块执行结果返回值通过promise链式调用传入下个事件模块promise方法中,直到事件队列所有事件模块执行完毕,将执行结束标记冒泡到事件队列的执行调用层,返回执行结束钩子函数给调用层。
在某一具体实施方式中,所述若所述事件队列为关系执行事件队列,则每次从所述数组中提取一个事件模块,并对所述事件模块进行包装之后,包括:
解析事件结构字段,依次调用对应字段逻辑代码片段,得到事件模块执行结果。
本发明提供一种事件队列的实现方法,包括:获取事件队列,将事件队列中的每个独立的事件模块放入数组中;判断所述事件队列是否为同步执行事件队列或异步执行事件队列或关系执行事件队列;若所述事件队列为同步执行事件队列,则每次从所述数组中提取一个事件模块,并对所述事件模块进行包装,判断所述事件模块的执行结果返回值是否为空,若所述事件模块的执行结果返回值不为空,中断未执行的事件模块包装过程,结束事件队列,返回执行中断钩子函数给调用层;若所述事件队列为异步执行事件队列,则遍历并提取所述数组中每个事件模块,并对所述事件模块进行包装,判断所述事件模块的执行结果返回值是否为空,若所述事件模块的执行结果返回值不为空,将执行结束标记冒泡到事件队列的执行调用层,返回执行并行结构钩子函数;若所述事件队列为关系执行事件队列,则每次从所述数组中提取一个事件模块,并对所述事件模块进行包装,事件模块执行结果返回值通过promise链式调用传入下个事件模块promise方法中,直到事件队列所有事件模块执行完毕,将执行结束标记冒泡到事件队列的执行调用层,返回执行结束钩子函数给调用层。本发明提供的方法通过定义不同粒度的事件类型模块来界定业务处理范围,提供不同的执行事件队列类型来组合事件模块形成一组高稳定性,高可读性的业务逻辑模块,这种技术实现方式,复用性高,可读性高,不同的事件类型模块可以任意复用组合来达到不同的业务逻辑诉求,满足现代企业快速变化的业务需求和追求低成本的效益诉求。
在某一具体实施例中,请参阅图3,本发明提供一种事件队列的实现方法。
需要说明的是:
1)一组稳定且带有特定业务逻辑模块的代码是由一个事件队列来体现的,多个事件队列之间是异步执行的,具体事件队列执行时机取决于各自事件队列被调用的钩子的时序逻辑。
2)一个事件队列里面可以放任意多个独立的事件模块。
3)一个事件模块实际上是一小段带有特定逻辑的代码片段。
4)每种事件队列类型决定的是该事件队列类型队列里面多个独立的事件模块的执行方式,是同步、异步还是前后继承关系执行。
本发明提供一种事件队列的实现方法,包括:
定义事件队列类型-同步执行事件队列(syncActions),放入同步执行事件队列(syncActions)的事件模块(action),按下列逻辑进行处理:
1)主逻辑A:遍历事件队列,如果队列不为空,每次提取一个事件模块,用promise进行包装并执行,进入判断逻辑;
2)判断逻辑一:事件模块执行结果返回值是空值,则队列为空,将执行结束标记冒泡到事件队列执行调用层,返回给调用层的执行结束钩子方法。
3)判断逻辑二:事件模块执行结果返回值不为空,则reject中断后续promise事件队列,并捕捉返回结果,冒泡到事件队列执行调用层,返回给调用层的执行中断钩子方法。
定义事件队列类型-异步执行事件队列(asyncActions)队列内的事件模块,所有事件独立执行,执行结果不会中断其他事件队列执行状态,具体按下列逻辑进行处理:
1)主逻辑B:遍历事件队列,如果队列不为空,依次提取每一个事件模块,用promise进行包装并立即执行,每个事件模块独立执行,返回结果不为空的值,冒泡到事件队列执行调用层的并行结构钩子方法;队列为空,将执行结束标记冒泡到事件队列执行调用层,返回给调用层的执行结束钩子方法。
定义事件队列类型-关系执行事件队列(seriesActions),队列内的事件同步执行,前一个action执行结果作为下一个action的入参,直到队列全部执行完毕,具体按下列逻辑进行处理:
1)主逻辑C:遍历事件队列,如果队列不为空,每次提取一个事件模块,用promise进行包装并执行,进入判断逻辑;队列为空,将执行结束标记冒泡到事件队列执行调用层,返回给调用层的执行结束钩子方法。
2)判断逻辑:事件模块执行结果返回值通过promise链式调用传入下个事件模块promise方法中,直到事件队列所有事件模块执行完毕,最后返回的结果值,冒泡到事件队列执行调用层,传给调用层的执行结束钩子方法。
定义事件模块类型action,例如request,submit,export,import,check等不同命名和作用的事件模块类型,每个事件模块用事件结构表示的就是一段逻辑代码,事件结构基础字段为{code,type,condition,mode,queue,getter,setter},可以支持扩展其他事件类型,定义不同的事件结构字段属性,这些字段代表不同业务特性的逻辑代码片段的控制属性开关。
事件类型action,支持事件结构属性可扩展字段,比如定义特定执行条件属性:行为生效条件(condition),在事件结构基础字段之外扩展了字段{condition,code,type,condition,mode,queue,getter,setter},而行为生效条件(condition)可以实现为一个函数钩子,则每个事件模块执行前调用condition函数钩子,返回的结果为true,则执行当前事件模块,钩子返回值结果为false,则不执行。
行为生效条件(condition)使用的举例场景:一个同步执行事件队列A,里面配置了3个独立事件模块a,b,c,其中a配置了condition,在同步执行事件队列里,a,b,c会顺序执行。
情况1:先执行事件模块a,a存在condition,则执行condition得到返回值为true,则a继续执行,整个队列执行结果应该是a->b->c。
情况2:先执行事件模块a,a存在condition,则执行condition得到返回值false,这时候事件模块a达不到行为生效条件,忽略不执行,整个队列执行结果应该是b->c。
这个例子解析了定义行为生效条件(condition)特性,是支持编写特定业务控制条件控制事件模块action是否执行,满足灵活的业务需求。
事件队列配置效果图如图4-6所示。其中,图4为同步执行事件队列效果图,图5为异步执行事件队列效果图,图6为关系执行事件队列效果图。
本发明通过定义不同粒度的事件类型模块(action)来界定业务处理范围,提供不同终止条件和执行逻辑的执行事件队列类型来组合事件模块形成一组高稳定性,高可读性的业务逻辑模块,这种技术实现方式,复用性高,可读性高,便于后期维护和进行业务迭代,对比自定义复杂的代码切片然后再钩子方法插入的方式,显然更能满足企业对灵活业务变更以及对减低开发成本的效益诉求。
第二方面。
请参阅图7,本发明提供一种事件队列的实现系统,包括:
事件队列获取模块10,用于获取事件队列,将事件队列中的每个独立的事件模块放入数组中。
事件队列类型判断模块20,用于判断所述事件队列是否为同步执行事件队列或异步执行事件队列或关系执行事件队列。
若所述事件队列为同步执行事件队列,则每次从所述数组中提取一个事件模块,并对所述事件模块进行包装,判断所述事件模块的执行结果返回值是否为空,若所述事件模块的执行结果返回值不为空,中断未执行的事件模块包装过程,结束事件队列,返回执行中断钩子函数给调用层;若所述事件模块的执行结果返回值为空,则队列为空,将执行结束标记冒泡到事件队列的执行调用层,返回执行结束钩子函数给调用层。
在某一具体实施方式中,所述若所述事件队列为同步执行事件队列,则每次从所述数组中提取一个事件模块,并对所述事件模块进行包装之后,包括:
解析事件结构字段,依次调用对应字段逻辑代码片段,得到事件模块执行结果。
若所述事件队列为异步执行事件队列,则遍历并提取所述数组中每个事件模块,并对所述事件模块进行包装,判断所述事件模块的执行结果返回值是否为空,若所述事件模块的执行结果返回值不为空,将执行结束标记冒泡到事件队列的执行调用层,返回执行并行结构钩子函数;若所述事件模块的执行结果返回值为空,则队列为空,将执行结束标记冒泡到事件队列的执行调用层,返回执行结束钩子函数给调用层。
在某一具体实施方式中,所述若所述事件队列为异步执行事件队列,则遍历并提取所述数组中每个事件模块,并对所述事件模块进行包装之后,包括:
解析事件结构字段,依次调用对应字段逻辑代码片段,得到每个事件模块执行结果。
若所述事件队列为关系执行事件队列,则每次从所述数组中提取一个事件模块,并对所述事件模块进行包装,事件模块执行结果返回值通过promise链式调用传入下个事件模块promise方法中,直到事件队列所有事件模块执行完毕,将执行结束标记冒泡到事件队列的执行调用层,返回执行结束钩子函数给调用层。
在某一具体实施方式中,所述若所述事件队列为关系执行事件队列,则每次从所述数组中提取一个事件模块,并对所述事件模块进行包装之后,包括:
解析事件结构字段,依次调用对应字段逻辑代码片段,得到事件模块执行结果。
本发明提供的系统通过定义不同粒度的事件类型模块来界定业务处理范围,提供不同的执行事件队列类型来组合事件模块形成一组高稳定性,高可读性的业务逻辑模块,这种技术实现方式,复用性高,可读性高,不同的事件类型模块可以任意复用组合来达到不同的业务逻辑诉求,满足现代企业快速变化的业务需求和追求低成本的效益诉求。
第三方面。
本发明提供了一种电子设备,该电子设备包括:
处理器、存储器和总线;
所述总线,用于连接所述处理器和所述存储器;
所述存储器,用于存储操作指令;
所述处理器,用于通过调用所述操作指令,可执行指令使处理器执行如本申请的第一方面所示的一种事件队列的实现方法对应的操作。
在一个可选实施例中提供了一种电子设备,如图8所示,图8所示的电子设备5000包括:处理器5001和存储器5003。其中,处理器5001和存储器5003相连,如通过总线5002相连。可选地,电子设备5000还可以包括收发器5004。需要说明的是,实际应用中收发器5004不限于一个,该电子设备5000的结构并不构成对本申请实施例的限定。
处理器5001可以是CPU,通用处理器,DSP,ASIC,FPGA或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器5001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线5002可包括一通路,在上述组件之间传送信息。总线5002可以是PCI总线或EISA总线等。总线5002可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器5003可以是ROM或可存储静态信息和指令的其他类型的静态存储设备,RAM或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM、CD-ROM或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
存储器5003用于存储执行本申请方案的应用程序代码,并由处理器5001来控制执行。处理器5001用于执行存储器5003中存储的应用程序代码,以实现前述任一方法实施例所示的内容。
其中,电子设备包括但不限于:移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。
第四方面。
本发明提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现本申请第一方面所示的一种事件队列的实现方法。
本申请的又一实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,当其在计算机上运行时,使得计算机可以执行前述方法实施例中相应内容。
Claims (14)
1.一种事件队列的实现方法,其特征在于,包括:
获取事件队列,将事件队列中的每个独立的事件模块放入数组中;
判断所述事件队列是否为同步执行事件队列或异步执行事件队列或关系执行事件队列;
若所述事件队列为同步执行事件队列,则每次从所述数组中提取一个事件模块,并对所述事件模块进行包装,判断所述事件模块的执行结果返回值是否为空,若所述事件模块的执行结果返回值不为空,中断未执行的事件模块包装过程,结束事件队列,返回执行中断钩子函数给调用层;
若所述事件队列为异步执行事件队列,则遍历并提取所述数组中每个事件模块,并对每个所述事件模块进行包装,判断每个所述事件模块的执行结果返回值是否为空,若所有所述事件模块的执行结果返回值均不为空,将执行结束标记冒泡到事件队列的执行调用层,返回执行并行结构钩子函数;
若所述事件队列为关系执行事件队列,则每次从所述数组中提取一个事件模块,并对所述事件模块进行包装,事件模块执行结果返回值通过promise链式调用传入下个事件模块promise方法中,直到事件队列所有事件模块执行完毕,将执行结束标记冒泡到事件队列的执行调用层,返回执行结束钩子函数给调用层。
2.如权利要求1所述的一种事件队列的实现方法,其特征在于,所述若所述事件队列为同步执行事件队列,则每次从所述数组中提取一个事件模块,并对所述事件模块进行包装,判断所述事件模块的执行结果返回值是否为空之后,包括:
若所述事件模块的执行结果返回值为空,则队列为空,将执行结束标记冒泡到事件队列的执行调用层,返回执行结束钩子函数给调用层。
3.如权利要求2所述的一种事件队列的实现方法,其特征在于,所述若所述事件队列为同步执行事件队列,则每次从所述数组中提取一个事件模块,并对所述事件模块进行包装之后,包括:
解析事件结构字段,依次调用对应字段逻辑代码片段,得到事件模块执行结果。
4.如权利要求1所述的一种事件队列的实现方法,其特征在于,所述若所述事件队列为异步执行事件队列,则遍历并提取所述数组中每个事件模块,并对每个所述事件模块进行包装,判断每个所述事件模块的执行结果返回值是否为空之后,包括:
若存在一个所述事件模块的执行结果返回值为空,则队列为空,将执行结束标记冒泡到事件队列的执行调用层,返回执行结束钩子函数给调用层。
5.如权利要求4所述的一种事件队列的实现方法,其特征在于,所述若所述事件队列为异步执行事件队列,则遍历并提取所述数组中每个事件模块,并对所述事件模块进行包装之后,包括:
解析事件结构字段,依次调用对应字段逻辑代码片段,得到每个事件模块执行结果。
6.如权利要求1所述的一种事件队列的实现方法,其特征在于,所述若所述事件队列为关系执行事件队列,则每次从所述数组中提取一个事件模块,并对所述事件模块进行包装之后,包括:
解析事件结构字段,依次调用对应字段逻辑代码片段,得到事件模块执行结果。
7.一种事件队列的实现系统,其特征在于,包括:
事件队列获取模块,用于获取事件队列,将事件队列中的每个独立的事件模块放入数组中;
事件队列类型判断模块,用于判断所述事件队列是否为同步执行事件队列或异步执行事件队列或关系执行事件队列;
若所述事件队列为同步执行事件队列,则每次从所述数组中提取一个事件模块,并对所述事件模块进行包装,判断所述事件模块的执行结果返回值是否为空,若所述事件模块的执行结果返回值不为空,中断未执行的事件模块包装过程,结束事件队列,返回执行中断钩子函数给调用层;
若所述事件队列为异步执行事件队列,则遍历并提取所述数组中每个事件模块,并对每个所述事件模块进行包装,判断每个所述事件模块的执行结果返回值是否为空,若所有所述事件模块的执行结果返回值均不为空,将执行结束标记冒泡到事件队列的执行调用层,返回执行并行结构钩子函数;
若所述事件队列为关系执行事件队列,则每次从所述数组中提取一个事件模块,并对所述事件模块进行包装,事件模块执行结果返回值通过promise链式调用传入下个事件模块promise方法中,直到事件队列所有事件模块执行完毕,将执行结束标记冒泡到事件队列的执行调用层,返回执行结束钩子函数给调用层。
8.如权利要求7所述的一种事件队列的实现系统,其特征在于,所述若所述事件队列为同步执行事件队列,则每次从所述数组中提取一个事件模块,并对所述事件模块进行包装,判断所述事件模块的执行结果返回值是否为空之后,包括:
若所述事件模块的执行结果返回值为空,则队列为空,将执行结束标记冒泡到事件队列的执行调用层,返回执行结束钩子函数给调用层。
9.如权利要求8所述的一种事件队列的实现系统,其特征在于,所述若所述事件队列为同步执行事件队列,则每次从所述数组中提取一个事件模块,并对所述事件模块进行包装之后,包括:
解析事件结构字段,依次调用对应字段逻辑代码片段,得到事件模块执行结果。
10.如权利要求7所述的一种事件队列的实现系统,其特征在于,所述若所述事件队列为异步执行事件队列,则遍历并提取所述数组中每个事件模块,并对每个所述事件模块进行包装,判断每个所述事件模块的执行结果返回值是否为空之后,包括:
若存在一个所述事件模块的执行结果返回值为空,则队列为空,将执行结束标记冒泡到事件队列的执行调用层,返回执行结束钩子函数给调用层。
11.如权利要求10所述的一种事件队列的实现系统,其特征在于,所述若所述事件队列为异步执行事件队列,则遍历并提取所述数组中每个事件模块,并对所述事件模块进行包装之后,包括:
解析事件结构字段,依次调用对应字段逻辑代码片段,得到每个事件模块执行结果。
12.如权利要求7所述的一种事件队列的实现系统,其特征在于,所述若所述事件队列为关系执行事件队列,则每次从所述数组中提取一个事件模块,并对所述事件模块进行包装之后,包括:
解析事件结构字段,依次调用对应字段逻辑代码片段,得到事件模块执行结果。
13.一种电子装置,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至6中任意一项所述的事件队列的实现方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如权利要求1至6中任意一项所述的事件队列的实现方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110795127.7A CN113742096B (zh) | 2021-07-14 | 2021-07-14 | 一种事件队列的实现方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110795127.7A CN113742096B (zh) | 2021-07-14 | 2021-07-14 | 一种事件队列的实现方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113742096A CN113742096A (zh) | 2021-12-03 |
CN113742096B true CN113742096B (zh) | 2022-04-22 |
Family
ID=78728592
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110795127.7A Active CN113742096B (zh) | 2021-07-14 | 2021-07-14 | 一种事件队列的实现方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113742096B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108196794A (zh) * | 2017-12-29 | 2018-06-22 | 华为技术有限公司 | 一种消息处理方法、装置及系统 |
CN110990435A (zh) * | 2019-12-03 | 2020-04-10 | 秒针信息技术有限公司 | 数据同步方法、装置和计算机可读存储介质 |
CN111359216A (zh) * | 2020-02-13 | 2020-07-03 | 网易(杭州)网络有限公司 | 一种游戏的信息处理方法、装置、电子设备及存储介质 |
CN111543037A (zh) * | 2017-12-29 | 2020-08-14 | 华为技术有限公司 | 事件驱动的无服务器函数编排 |
CN111651864A (zh) * | 2020-05-12 | 2020-09-11 | 北京华如科技股份有限公司 | 一种事件集中发射式多异构时间队列优化仿真执行方法及系统 |
CN112699183A (zh) * | 2020-12-31 | 2021-04-23 | 浙江集享电子商务有限公司 | 数据处理方法、系统、可读存储介质及计算机设备 |
CN112817772A (zh) * | 2019-11-15 | 2021-05-18 | 深信服科技股份有限公司 | 一种数据通信方法、装置、设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11403391B2 (en) * | 2019-11-18 | 2022-08-02 | Jf Rog Ltd | Command injection identification |
-
2021
- 2021-07-14 CN CN202110795127.7A patent/CN113742096B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108196794A (zh) * | 2017-12-29 | 2018-06-22 | 华为技术有限公司 | 一种消息处理方法、装置及系统 |
CN111543037A (zh) * | 2017-12-29 | 2020-08-14 | 华为技术有限公司 | 事件驱动的无服务器函数编排 |
CN112817772A (zh) * | 2019-11-15 | 2021-05-18 | 深信服科技股份有限公司 | 一种数据通信方法、装置、设备及存储介质 |
CN110990435A (zh) * | 2019-12-03 | 2020-04-10 | 秒针信息技术有限公司 | 数据同步方法、装置和计算机可读存储介质 |
CN111359216A (zh) * | 2020-02-13 | 2020-07-03 | 网易(杭州)网络有限公司 | 一种游戏的信息处理方法、装置、电子设备及存储介质 |
CN111651864A (zh) * | 2020-05-12 | 2020-09-11 | 北京华如科技股份有限公司 | 一种事件集中发射式多异构时间队列优化仿真执行方法及系统 |
CN112699183A (zh) * | 2020-12-31 | 2021-04-23 | 浙江集享电子商务有限公司 | 数据处理方法、系统、可读存储介质及计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113742096A (zh) | 2021-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9201693B2 (en) | Quota-based resource management | |
WO2021088419A1 (zh) | 一种多业务请求进程调用fpga设备的方法及相关装置 | |
US20210208935A1 (en) | Method for Scheduling Multi-Core Processor, Terminal, and Storage Medium | |
CN110599183B (zh) | 智能合约调用方法、装置及存储介质 | |
CN107479981B (zh) | 一种基于异步调用实现同步调用的处理方法及装置 | |
CN112965794B (zh) | 算法调用方法、电子设备及存储介质 | |
CN109451076B (zh) | 一种网络请求的合并处理方法、装置及电子设备 | |
CN111553652B (zh) | 业务处理方法及装置 | |
CN112035229A (zh) | 一种计算图处理方法、装置及存储介质 | |
RU2616164C2 (ru) | Способы и устройство для работы браузерного движка | |
CN115114071A (zh) | 一种内存分析方法、装置、设备及介质 | |
CN113742096B (zh) | 一种事件队列的实现方法及系统 | |
CN111782294A (zh) | 一种应用程序的运行方法、装置、电子设备及存储介质 | |
CN111857854A (zh) | 关机资源加载方法、装置、存储介质和电子设备 | |
CN111158889A (zh) | 一种批量任务处理方法及系统 | |
CN111796865B (zh) | 一种字节码文件修改方法、装置、终端设备及介质 | |
CN110515718B (zh) | 批量任务断点续作方法、装置、设备及介质 | |
CN111857865A (zh) | 一种事件型任务的处理方法、装置、电子设备及存储介质 | |
CN109522187B (zh) | 状态信息快速提取方法及装置 | |
CN113934635B (zh) | 基于异构处理器提供同等算力云服务的方法及应用 | |
CN109284097A (zh) | 实现复杂数据分析的方法、设备、系统及存储介质 | |
CN112257106B (zh) | 一种数据检测方法及装置 | |
CN113885951B (zh) | 线程处理方法及装置、电子设备、计算机可读存储介质 | |
CN108345507B (zh) | 一种JS模块与Java模块之间的通信方法及装置 | |
CN116627896A (zh) | 基于向量处理器的数据规约方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |