一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据获取方法、系统、电子设备及计算机可读存储介质与流程

2021-12-01 00:48:00 来源:中国专利 TAG:


1.本公开涉及计算机技术领域,具体而言,涉及基于计算机技术的一种数据获取方法、数据获取系统、电子设备及计算机可读存储介质。


背景技术:

2.随着计算机技术的发展,程序项目中关于客户端与服务端之间的数据请求的代码数量日益增长。以基于react架构并应用hook技术的程序项目为例,一个程序项目中往往包括大量用于数据请求的hook函数。而开发人员在调用hook函数请求数据时,往往会习惯性地多次点击“提交请求”按钮,即一次提交多个数据请求。而服务器端需要对多个程序项目中的每个重复性数据请求逐一响应,这会对服务器端造成较重的性能负荷。
3.此外,对于单个程序项目而言,在前一hook函数的重复性数据请求在等待响应时,会挤占时序上靠后的hook函数的数据请求响应时间,从而造成请求拥堵,严重影响针对各hook函数的响应速度。
4.因此,需要一种改进的数据获取方法和系统,以至少在一定程度上改善上述问题。
5.需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。


技术实现要素:

6.本公开实施例的目的在于提供一种数据获取方法、数据获取系统、电子设备及计算机可读存储介质,从而至少在一定程度上解决重复性数据请求对服务器端造成的较重性能负荷,并提高针对程序项目的各个数据请求的响应速度,进而降低资源占用并提高工作效率。
7.根据本公开的一个方面,提供一种数据获取方法,其特征在于,包括:
8.确定用户输入的输入参数,并将所述输入参数的值设置为热更新程序的应用程序编程接口的第一参数的值;
9.响应于用户发起的数据请求指令调用所述应用程序编程接口,以调用所述热更新程序;
10.通过所述热更新程序调用预设的第一状态管理单元,并将所述第一参数设置为与所述第一状态管理单元相关联;
11.比对所述第一参数的值与所述第一状态管理单元的值;
12.当所述第一参数的值与所述第一状态管理单元的值不同时,根据所述第一参数的值更新所述第一状态管理单元的值,并基于所述输入参数向服务器端发送数据请求消息;
13.当所述第一参数的值与所述第一状态管理单元的值相同时,不向所述服务器端发送所述数据请求消息。
14.在本公开的一种示例性实施例中,所述方法还包括:通过所述热更新程序将所述应用程序编程接口的第二参数设置为与预设的第二状态管理单元相关联;响应于用户将所
述第二参数的标志位设置为启用并发起数据请求指令,调用所述应用程序编程接口,以调用所述热更新程序;通过所述热更新程序调用所述第二状态管理单元,并改变所述第二状态管理单元的状态;以及响应于所述第二状态管理单元的状态的改变,基于所述输入参数向服务器端发送数据请求消息。
15.在本公开的一种示例性实施例中,所述方法还包括:当所述第二参数的标志位被设置为启用时,响应于用户发起的定时获取指令,以预设时间间隔向服务器端发送数据请求消息。
16.在本公开的一种示例性实施例中,所述输入参数包括函数类型的输入参数,所述确定用户输入的输入参数,包括:接收用户输入的所述函数类型的输入参数并执行相应的函数,并且根据执行所述相应的函数的结果确定所述输入参数。
17.在本公开的一种示例性实施例中,所述输入参数还包括默认参数,所述根据执行所述相应的函数的结果确定所述输入参数,包括:将执行所述相应的函数的结果与所述默认参数进行合并,以确定所述输入参数。
18.在本公开的一种示例性实施例中,在所述向服务器端发送数据请求消息之后,所述方法还包括:从所述服务器端获取数据请求的状态;当所述数据请求的状态为成功时,向用户反馈成功状态以及从所述服务器端接收到的数据;当所述数据请求的状态为失败时,向用户反馈失败状态。
19.在本公开的一种示例性实施例中,所述方法还包括:通过所述热更新程序调用预设的第三状态管理单元并将所述从所述服务器端接收到的数据设置为所述第三状态管理单元的值,并且通过所述热更新程序将一个或多个程序组件设置为与所述第三状态管理单元相关联;当所述第三状态管理单元的值发生变化时,根据所述第三状态管理单元的变化后的值更新所述一个或多个程序组件中的对应的参数的值。
20.根据本公开的一个方面,提供一种数据获取系统,包括:
21.参数输入与处理模块,用于确定用户输入的输入参数;
22.热更新模块,用于将所述输入参数的值设置为所述热更新模块的应用程序编程接口的第一参数的值;以及用于当所述应用程序编程接口响应于用户发起的数据请求指令而被调用时,被相应地调用并且调用预设的第一状态管理单元,并将所述第一参数设置为与所述第一状态管理单元相关联;
23.数据请求与状态处理模块,用于比对所述第一参数的值与所述第一状态管理单元的值;当所述第一参数的值与所述第一状态管理单元的值不同时,根据所述第一参数的值更新所述第一状态管理单元的值,并基于所述输入参数向服务器端发送数据请求消息;当所述第一参数的值与所述第一状态管理单元的值相同时,不向所述服务器端发送所述数据请求消息。
24.根据本公开的一个方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的方法。
25.根据本公开的一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的方法。
26.本公开示例性实施例可以具有以下部分或全部有益效果:
27.通过本公开示例性实施方式所提供的数据获取方法,一方面,由热更新程序调用第一状态管理单元,并将其应用程序编程接口的第一参数设置为与该第一状态管理单元相关联,并且根据该第一参数的值与该第一状态管理单元的值是否相同来控制是否向服务器端发送数据请求消息,使得仅当用户更改了输入参数并调用应用程序编程接口时,才会触发数据请求动作;而当用户未更改输入参数而是习惯性地多次提交数据请求时,不会触发数据请求动作;由此,能够有效避免服务器端必须对每个重复性的数据请求逐一响应,从而造成服务器端性能负荷较重以及程序项目中数据请求响应速度慢的风险,进而降低了资源占用并提高了工作效率。另一方面,通过由独立于程序项目的热更新程序及其应用程序编程接口来控制向服务器端发送数据请求消息的动作,使得在各程序项目中,开发人员无需针对每个数据请求都编写对应的hook函数,而是在需要时通过应用程序编程接口调用热更新程序即可完成数据请求的动作,从而避免了程序项目中的大量重复性或复杂代码,实现了程序项目轻量化,并提升了程序项目的可读性与可维护性。
28.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
29.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
30.图1示意性示出了根据本公开的一个实施例的数据获取方法的流程图;
31.图2示意性示出了根据本公开的一个实施例的通过热更新程序与数据请求与状态处理程序进行数据请求的流程图;
32.图3示意性示出了根据本公开的一个实施例的通过第二状态管理单元控制数据请求动作的流程图;
33.图4示意性示出了根据本公开的一个实施例的确定输入参数的流程图;
34.图5示意性示出了根据本公开的一个实施例的执行数据请求的流程图;
35.图6示意性示出了根据本公开的一个实施例的数据获取系统的框图;
36.图7示出了适于用来实现本公开实施例的电子设备的计算机系统的结构示意图。
具体实施方式
37.现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
38.此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
39.在根据本公开的数据获取方法中,基于“输入参数——比对参数的值——发送数据请求消息”的操作过程,可以根据不同的功能设置不同的程序模块,例如参数输入与处理程序模块、热更新程序模块和数据请求与状态处理程序模块等。上述这些程序模块可以根据实际需要被整合在一起实现为单个程序或npm包,并且该单个程序或npm包可以被各程序项目彼此独立地从服务器或服务器集群下载并通过特定接口调用。另外,在一种可能的实施方式中,可以将根据本公开的数据获取方法应用于以异步的方式获取数据。在本公开后续的说明中,将示例性地基于异步获取数据的场景对根据本公开的数据获取方法进行说明。此外,根据本公开的数据获取方法可以应用于能够编写并运行程序项目的终端设备,例如可以包括但不限于个人计算机、掌上电脑设备等,本公开实施例对此不做特别限定。
40.以下对本公开实施例的技术方案进行详细阐述:
41.本示例实施方式提供了一种数据获取方法。参考图1所示,该数据获取方法可以包括以下步骤:
42.步骤s110.确定用户输入的输入参数,并将所述输入参数的值设置为热更新程序的应用程序编程接口的第一参数的值;
43.步骤s120.响应于用户发起的数据请求指令调用所述应用程序编程接口,以调用所述热更新程序;
44.步骤s130.通过所述热更新程序调用预设的第一状态管理单元,并将所述第一参数设置为与所述第一状态管理单元相关联;
45.步骤s140.比对所述第一参数的值与所述第一状态管理单元的值;
46.步骤s150.当所述第一参数的值与所述第一状态管理单元的值不同时,根据所述第一参数的值更新所述第一状态管理单元的值,并基于所述输入参数向服务器端发送数据请求消息;
47.步骤s160.当所述第一参数的值与所述第一状态管理单元的值相同时,不向所述服务器端发送所述数据请求消息。
48.下面,以示例性实施例的方式,对上述步骤进行更加详细的说明。
49.在步骤s110中,确定用户输入的输入参数,并将所述输入参数的值设置为热更新程序的应用程序编程接口的第一参数的值。
50.在本示例实施方式中,可以通过参数输入与处理程序并且例如可以通过如图2所示的流程来确定用户输入的输入参数;其中,参数输入与处理程序可以提供参数输入接口和用于用户操作以输入参数的输入界面,而在步骤s210,用户则可以通过该参数输入与处理程序进行参数输入。举例来说,如下表所示,用户可以输入的输入参数可包括:
51.参数名称意义类型query待发送的数据请求服务promiseparams查询该数据请求服务需要的参数对象或函数
defaultparams查询该数据请求服务的默认参数对象
52.表1
53.其中,参数名称例如为“query”的输入参数可用于由用户发起数据请求服务,并且该输入参数例如可以是“promise”类型的参数;其中“promise”为一个用于传递异步操作的消息的回调函数,即,承诺在未来会执行异步操作的函数。参数名称例如为“params”的输入参数例如可以包括请求来源、请求对象等,其可用于发送至服务器端并使服务器端根据该输入参数查询并下发所请求的数据;其中该输入参数的类型可以为对象或函数。而参数名称例如为“defaultparams”的输入参数可以为对象类型的参数,其可以为上述参数名称为“params”的输入参数的系统默认参数,例如在用户未输入参数的情况下,可以将该默认参数发送至服务器端并使服务器端根据该默认参数查询并下发所请求的数据。鉴于此,在步骤s220,参数输入与处理程序可以对输入参数进行格式校验,例如校验名为“params”的输入参数的格式类型是否为对象或函数,或者校验名为“defaultparams”的输入参数的格式类型是否为对象,当校验出输入参数的格式不符合上述规定的类型时,则跳转到步骤s230,在程序项目的图形用户界面上对用户弹出错误提示,提示输入参数的格式错误,并之后进而跳转到步骤s240,结束本次参数输入与校验流程。
54.在基于如图2所示的流程的一个示例中,当完成校验并确定输入参数的格式符合规定的类型时,则跳转到步骤s250,由参数输入与处理程序判断输入参数是否包括函数类型的输入参数,该函数类型的输入参数可以与某些外部数据相关联,并且需要调用相关联的外部数据来执行相应的函数,以便根据执行该相应的函数的结果来确定最终的输入参数。举例来说,输入参数可以包括排序函数类型的输入参数,以选取在排序结果中排在前3名的用户的用户名作为最终的输入参数,则在接收到用户输入的该排序函数类型的输入参数后,可以调用用户列表并执行相应的排序函数,并且确定出排在前3名的用户名作为最终的输入参数;其中函数类型的输入参数例如可以编写为function(){return something}的形式。因此,当判断出输入参数为函数类型的输入参数时,可以跳转到步骤s260,由参数输入与处理程序接收所输入的该函数类型的输入参数并执行相应的函数,以得到执行的结果。当输入参数中不包括默认参数的情况下,该执行相应函数的结果即为最终确定的输入参数。
55.通过前述示例,使得用户能够不局限于以对象的形式输入参数,而是能够灵活地通过执行函数的方式在触发请求数据之前自动确定要输入的参数,从而降低了用户在编写程序时的工作量,减少了人力浪费并提高了编程效率。
56.在基于如图2所示的流程的另一个示例中,输入参数例如可以同时包括用户所输入的函数类型的输入参数以及默认参数,在这种情况下,在以前述示例的方式执行相应的函数之后,可以跳转到步骤s270,将执行相应函数所得到的结果与默认参数进行合并,从而在步骤s280确定并输出合并后的最终的输入参数。例如,当用户所输入的参数包括排序函数类型的参数时,执行该排序函数所得到的排在第一名的用户名为lily,即,param={user:lily},而输入参数还包括默认参数“年龄为25岁”,即,defaultparams={age:25};则可以将执行函数的结果与该默认参数合并,得到最终的输入参数{user:lily,age:25},使得服务器端能够根据该最终的输入参数查询并下发所请求的数据。
57.通过上述示例,用户能够将通用性较高的参数设置为默认参数,并且在请求数据
时能够自动将该默认参数与输入的参数进行合并,并将合并后的参数作为最终的输入参数发送至服务器端。通过这种方式,在设置输入参数时,用户无需反复输入通用性较高的参数,从而节省了输入操作的时间成本,有助于提高用户的编写工作效率。
58.在确定输入参数之后,可以通过热更新程序将输入参数的值设置为该热更新程序的应用程序编程接口(api)的第一参数的值。在本示例实施方式中,热更新程序可以包括例如被命名为“setparams”的应用程序编程接口,通过调用该应用程序编程接口,则可以实现对该热更新程序的调用。该应用程序编程接口例如可以被实现为函数的形式,并且可以包括多个参数。而热更新程序例如可以通过特定接口调用等方式获取用户输入的输入参数,并且可以将该输入参数的值设置为应用程序编程接口的多个参数中的第一参数的值。举例来说,根据前述示例,可以将该第一参数的值设置为{user:lily,age:25}。
59.在步骤s120中,响应于用户发起的数据请求指令调用所述应用程序编程接口,以调用所述热更新程序。
60.在本示例实施方式中,用户例如可以通过点击程序项目的图形用户界面上的“提交请求”按钮,来执行数据请求逻辑行,从而实现调用应用程序编程接口,进而调用相应的热更新程序。
61.在步骤s130中,通过所述热更新程序调用预设的第一状态管理单元,并将所述第一参数设置为与所述第一状态管理单元相关联。
62.在本示例实施方式中,当热更新程序被调用时,其可以调用预设的第一状态管理单元。在一个示例中,该第一状态管理单元例如可以与名为recoil的状态管理库中的“原子”的概念相对应。其中,该“原子”可以为一种多程序组件可共享的状态管理单位,当原子的状态发生改变或被更新时,则订阅该原子的所有程序组件都可以采用相应的新的值来重新进行渲染或共享该原子的状态,从而实现订阅的所有程序组件自动进行更新或重新执行运算动作,使得能够在参数更新时避免进行全量渲染。在本公开的后续说明中,将以与recoil状态管理库中的“原子”相对应的状态管理单元为例对本公开的实施例的技术方案进行说明。除recoil状态管理库之外,例如还可以通过如redux等其他状态管理库来实现类似的功能,本示例实施方式对此不做特别限定。而该第一状态管理单元可以由用户,即程序项目的编写人员或其他编写人员预先编写好,并使其独立于程序项目并且能够被热更新程序调用。举例来说,编写设置该第一状态管理单元例如可以通过下述逻辑行来实现:
63.paramstate=atom({
64.key:
‘’
,
65.default:{}
66.})。
67.其中,“key”为第一状态管理单元的全局唯一的标识,而“default”为该第一状态管理单元的默认值。
68.在调用第一状态管理单元之后,热更新程序可以将第一参数设置为与该第一状态管理单元相关联,也就是说,可以将应用程序编程接口作为一程序组件并使该应用程序编程接口的第一参数订阅第一状态管理单元。
69.另外,除热更新程序之外,如前所述,还可以设置用于响应于第一状态管理单元的状态改变而执行数据请求动作的数据请求与状态处理程序,可以将预设的第一状态管理单
元设置在该数据请求与状态处理程序中,以便当第一状态管理单元的状态或值发生改变时,该数据请求与状态处理程序能够相应地执行向服务器端请求数据的动作。
70.在步骤s140、s150和s160中,比对所述第一参数的值与所述第一状态管理单元的值;当所述第一参数的值与所述第一状态管理单元的值不同时,根据所述第一参数的值更新所述第一状态管理单元的值,并基于所述输入参数向服务器端发送数据请求消息;当所述第一参数的值与所述第一状态管理单元的值相同时,不向所述服务器端发送所述数据请求消息。
71.在本示例实施方式中,可以由数据请求与状态处理程序对第一参数的值与第一状态管理单元的值进行比对。其中,用户在编写程序项目时,可以在程序项目的逻辑行中预先写入默认的输入参数,而在程序项目首次启动并首次执行数据请求时,可以基于该默认的输入参数直接向服务器端发送数据请求消息,此时无需调用应用程序编程接口并且可以将该默认的输入参数的值设置为第一参数的值。同时,在程序项目首次启动前确定与之关联的数据请求与状态处理程序时,同样可以将该默认的输入参数的值设置为第一状态管理单元的值。因此,在首次执行数据请求之后,第一参数的值与第一状态管理单元的值相同。
72.而在后续的操作中,如果用户更改了输入参数,并例如点击了程序项目的图形用户界面上的“提交请求”按钮,则此时可以将更改后的输入参数的值设置为第一参数的值,并且执行相应的逻辑行以调用应用程序编程接口,从而通过调用热更新程序来调用第一状态管理单元;此时,当数据请求与状态处理程序对第一参数的值与第一状态管理单元的值进行比对时,第一参数的值为更改后的输入参数的值,而第一状态管理单元的值仍为默认的输入参数的值,因此二者不同;在这种情况下,则数据请求与状态处理程序将根据第一参数的值,也就是更改后的输入参数的值更新第一状态管理单元的值;而第一状态管理单元的值被更新意味着该第一状态管理单元的状态发生了改变,因此,响应于该第一状态管理单元的状态的改变,数据请求与状态处理程序可以相应地基于更改后的输入参数向服务器端发送数据请求消息。
73.而如果用户并未更改输入参数,仅是习惯性地多次点击程序项目的图形用户界面上的“提交请求”按钮,则此时数据请求与状态处理程序进行比对时第一参数的值与第一状态管理单元的值仍相同;在这种情况下,不更新第一状态管理单元的值,也就是说,该第一状态管理单元的状态未发生改变,则数据请求与状态处理程序不会向服务器端发送数据请求消息,从而实现了缓存并删除用户在未更改输入参数时重复性的无效数据请求。
74.综上,根据本示例实施方式的数据获取方法例如可以主要包括如图3所示的步骤:在s310,当用户输入的输入参数变化时,第一参数可以随之而改变;在s320,当用户执行相应的逻辑行提交数据请求时,则可以调用应用程序编程接口;在s330,由于应用程序编程接口被调用,则热更新程序随之被调用,进而通过该热更新程序调用第一状态管理单元;在s340,当第一参数的值与第一状态管理单元的值不同而根据第一参数的值更新第一状态管理单元的值时,使得第一状态管理单元的状态发生改变,从而使数据请求与状态处理程序向服务器端发送数据请求;在s350,在从服务器端接收到所请求的数据后,可以向用户输出所请求的数据。
75.通过本公开示例性实施方式所提供的数据获取方法,一方面,由热更新程序调用第一状态管理单元,并将其应用程序编程接口的第一参数设置为与该第一状态管理单元相
关联,并且根据该第一参数的值与该第一状态管理单元的值是否相同来控制是否向服务器端发送数据请求消息,使得仅当用户更改了输入参数并调用应用程序编程接口时,才会触发数据请求动作;而当用户未更改输入参数而是习惯性地多次提交数据请求时,不会触发数据请求动作;由此,能够有效避免服务器端必须对每个重复性的数据请求逐一响应,从而造成服务器端性能负荷较重以及程序项目中数据请求响应速度慢的风险,进而降低了资源占用并提高了工作效率。另一方面,通过由独立于程序项目的热更新程序及其应用程序编程接口来控制向服务器端发送数据请求消息的动作,使得在各程序项目中,开发人员无需针对每个数据请求都编写对应的hook函数,而是在需要时通过应用程序编程接口调用热更新程序即可完成数据请求的动作,从而避免了程序项目中的大量重复性或复杂代码,实现了程序项目轻量化,并提升了程序项目的可读性与可维护性。
76.在一个示例中,除上述第一状态管理单元之外,还可以通过第二状态管理单元来控制数据请求与状态处理程序发送数据请求。在如图3所示的示例性数据获取方法中,可以包括下述步骤:
77.在步骤s410中,通过所述热更新程序将所述应用程序编程接口的第二参数设置为与预设的第二状态管理单元相关联。在实际应用中,除了用户根据当前程序项目的需求而向服务器端请求数据之外,还可能涉及在服务器端的数据随时间定期更新,而用户则需要每隔相应的时间发送数据请求以便从服务器端拉取更新后的数据,但此时用户并未改变所输入的输入参数。在这种情况下,除第一状态管理单元之外,编写人员还可以预先编写第二状态管理单元,并将其设置在数据请求与状态处理程序中,使得该第二状态管理单元同样可以独立于程序项目并且能够被热更新程序调用,而且与第一状态管理单元类似地,第二状态管理单元的状态改变同样能够触发数据请求与状态处理程序向服务器端发送数据请求消息。而热更新程序则可以将其应用程序编程接口的第二参数设置为与该第二状态管理单元相关联。
78.在步骤s420中,响应于用户将所述第二参数的标志位设置为启用并发起数据请求指令,调用所述应用程序编程接口,以调用所述热更新程序。在将第二参数与第二状态管理单元相关联之后,可以通过第二参数的标志位来控制是否启用第二状态管理单元。例如,用户可以将第二参数的标志位的状态设为“true”,即设置为启用状态,则此时可以相应地启用第二状态管理单元来控制数据请求的发送;而用户还可以将第二参数的标志位的状态设为“false”,即设置为停用状态,则此时不启用第二状态管理单元来控制数据请求的发送。可以设置为当第二参数的标志位的状态为“false”时,将第二状态管理单元的状态强制锁定在当前的状态下,这样即使该第二状态管理单元被调用,其状态不发生改变,则不会触发数据请求与状态处理程序向服务器端发送数据请求消息。举例来说,例如可以在程序项目的图形用户界面上提供被命名为“更新标志位”的复选框,并提供“true”和“false”两个选项,而用户可以通过勾选其中的一个选项来将第二参数的标志位的状态相应地设为“true”或者“false”。在用户将第二参数的标志位的状态设为“true”并执行相应逻辑行发起数据请求指令时,与前述示例性说明类似地,可以调用应用程序编程接口,以相应地调用热更新程序。
79.在步骤s430中,通过所述热更新程序调用所述第二状态管理单元,并改变所述第二状态管理单元的状态。热更新程序被调用后,其可以检测第二参数的标志位的状态为

true”还是“false”,当检测到第二参数的标志位的状态为“false”时,则确定不启用第二状态管理单元并且不进行后续操作;而当检测到第二参数的标志位的状态为“true”时,热更新程序可以调用第二状态管理单元,并且改变该第二状态管理单元的状态。举例来说,例如可以通过改变该第二状态管理单元的值来改变其状态;例如该第二状态管理单元的默认值可以为0,当将该第二状态管理单元的值从默认值0更新为1时,则该第二状态管理单元的状态可以相应地发生改变。
80.在步骤s440中,响应于所述第二状态管理单元的状态的改变,基于所述输入参数向服务器端发送数据请求消息。与前述示例性说明类似地,第二状态管理单元的状态的改变同样会触发数据请求与状态处理程序向服务器端发送数据请求消息。因此,当检测到第二状态管理单元的状态发生改变时,数据请求与状态处理程序可以基于输入参数发出数据请求消息。
81.通过上述示例,在服务器端的数据随时间定期更新,用户需要定时从服务器端拉取更新后的数据的应用场景下,可以为用户提供一种自主控制的开关手段,使得用户能够在输入参数未发生改变的情况下,根据需要通过上述第二状态管理单元来自主控制缓存重复数据请求功能的开与关。从而使得用户能够根据不同的应用场景灵活地选用相应的数据获取策略,提高了根据本公开的数据获取方法的通用性并且有助于提升用户获取数据的工作效率。
82.在另一个示例中,在第二参数的标志位被设置为“true”,即启用状态的情况下,用户还可以执行相应的逻辑行以发起定时获取指令。在该定时获取指令中,例如可以由用户设置定时的时长,例如设置为每隔1分钟向服务器端发送一次数据请求消息。而基于用户的设置,则可以以所设定的时间间隔,例如每隔1分钟改变第二状态管理单元的状态,使得触发数据请求与状态处理程序向服务器端发送数据请求消息。通过该示例,进一步削减了在需要定时更新数据的应用场景下用户拉取数据的操作负担,从而有助于降低人力的消耗并提高程序编写人员的操作效率。
83.在一个示例中,还可以基于如图5所示的流程确定所发送的数据请求的状态。在步骤s510,可以由用户设置输入参数;通常,在程序项目启动时,即会自动基于默认的输入参数向服务器端发送数据请求消息,但有时用户不希望程序项目一启动即自动获取数据,在这种情况下,用户例如可以对默认的输入参数添加“等待”标识,即“wait”标识符。而在步骤s520,数据请求与状态处理程序可以检验输入参数是否带有wait标识符,如果带有,则跳转至步骤s570,不发送数据请求消息并结束本次流程,直至用户执行逻辑行调用热更新程序的应用程序编程接口为止;如果不带有,则跳转至步骤s530,相应地例如通过fetch函数来执行数据请求,并且同时还可以例如通过数据请求与状态处理程序提供的react loadable服务从服务器端获取数据请求的状态,其中数据请求的状态例如可以包括请求中、请求成功、请求错误等数种状态。并且在步骤s540,数据请求与状态处理程序可以确定数据请求是否请求成功,如果请求失败,则跳转至步骤s550,向用户反馈失败状态并进而跳转至步骤s570以结束本次流程;如果请求成功,则跳转至步骤s560,数据请求与状态处理程序可以向用户反馈成功状态以及从服务器端接收到的相应的数据,最后到达步骤s570并结束本次流程。
84.通过上述示例,可以由用户通过wait标识符来控制发起数据请求的时机,增强了
程序项目的易用性和可控性;同时,数据请求与状态处理程序自身即可提供获取数据请求的状态的服务,使得用户在通过数据请求与状态处理程序发送数据请求后即能够直观而快速地了解到当前请求的状态,而无需在程序项目中编写额外的代码以保证状态获取功能,使得程序项目进一步轻量化,从而有助于节省人力成本并提升程序项目的可读性与可维护性。
85.在一个示例中,除第一和第二状态管理单元之外,编写人员还可以预先编写第三状态管理单元,并将其设置在数据请求与状态处理程序中,使得该第三状态管理单元同样可以独立于程序项目并且能够被热更新程序调用。通过热更新程序可以将该第三状态管理单元的值设置为从服务器端接收到的数据,并且将程序项目中的一个或多个程序组件设置为与第三状态管理单元相关联,也就是说,订阅该第三状态管理单元。如前文所述,根据本公开的数据获取方法,当状态管理单元的状态发生改变或被更新时,则订阅该状态管理单元的所有程序组件都可以采用相应的新的值来自动重新进行渲染或共享该原子的状态。因此,当从服务器端获取的数据发生变化时,也就是说该第三状态管理单元的值发生变化时,则订阅该第三状态管理单元的一个或多个程序组件中的对应的参数的值也将随之更新,而不需要对这一个或多个程序组件进行全量重渲染或重计算。
86.通过上述示例的方式,利用第三状态管理单元与对应的一个或多个参数的关联关系,实现了细粒化和分散化的数据管理,和随取随用的数据更新方式。从而使得在从服务器端获取到更新后的数据时,不必对所涉及的程序组件进行整体架构上的更新渲染,因此降低了程序项目在更新数据方面的计算负荷,进而有助于减少资源占用并相应地提高程序项目的工作效率。
87.应当注意,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
88.进一步的,本示例实施方式中,还提供了一种数据获取系统。参考图6所示,该数据获取系统600可以包括参数输入与处理模块610、数据请求与状态处理模块620和热更新模块630。其中:
89.参数输入与处理模块610可以用于确定用户输入的输入参数;
90.热更新模块630可以用于将所述输入参数的值设置为所述热更新模块的应用程序编程接口的第一参数的值;以及用于当所述应用程序编程接口响应于用户发起的数据请求指令而被调用时,被相应地调用并且调用预设的第一状态管理单元,并将所述第一参数设置为与所述第一状态管理单元相关联;
91.数据请求与状态处理模块620可以用于比对所述第一参数的值与所述第一状态管理单元的值;当所述第一参数的值与所述第一状态管理单元的值不同时,根据所述第一参数的值更新所述第一状态管理单元的值,并基于所述输入参数向服务器端发送数据请求消息;当所述第一参数的值与所述第一状态管理单元的值相同时,不向所述服务器端发送所述数据请求消息。
92.在本公开的一种示例性实施例中,所述热更新模块630还可以用于将所述应用程序编程接口的第二参数设置为与预设的第二状态管理单元相关联;以及用于当所述应用程
序编程接口响应于用户将所述第二参数的标志位设置为启用并发起数据请求指令而被调用时,被相应地调用并且调用所述第二状态管理单元,以及改变所述第二状态管理单元的状态;所述数据请求与状态处理模块620还可以用于响应于所述第二状态管理单元的状态的改变,基于所述输入参数向服务器端发送数据请求消息。
93.在本公开的一种示例性实施例中,当所述第二参数的标志位被设置为启用时,所述数据请求与状态处理模块620还可以用于响应于用户发起的定时获取指令,以预设时间间隔向服务器端发送数据请求消息。
94.在本公开的一种示例性实施例中,所述输入参数包括函数类型的输入参数,所述参数输入与处理模块610还可以用于接收用户输入的所述函数类型的输入参数并执行相应的函数,并且根据执行所述相应的函数的结果确定所述输入参数。
95.在本公开的一种示例性实施例中,所述输入参数还包括默认参数,所述参数输入与处理模块610还可以用于将执行所述相应的函数的结果与所述默认参数进行合并,以确定所述输入参数。
96.在本公开的一种示例性实施例中,在向服务器端发送数据请求消息之后,所述数据请求与状态处理模块620还可以用于从所述服务器端获取数据请求的状态;当所述数据请求的状态为成功时,向用户反馈成功状态以及从所述服务器端接收到的数据;当所述数据请求的状态为失败时,向用户反馈失败状态。
97.在本公开的一种示例性实施例中,所述热更新模块630还可以用于调用第三状态管理单元并将所述从所述服务器端接收到的数据设置为所述第三状态管理单元的值,并且通过所述热更新程序将一个或多个程序组件设置为与所述第三状态管理单元相关联;以及用于当所述第三状态管理单元的值发生变化时,根据所述第三状态管理单元的变化后的值更新所述一个或多个程序组件中的对应的参数的值。
98.上述数据获取系统中各模块或单元的具体细节已经在对应的数据获取方法中进行了详细的描述,因此此处不再赘述。
99.图7示出了适于用来实现本公开实施例的电子设备的计算机系统的结构示意图。
100.需要说明的是,图7示出的电子设备的计算机系统700仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
101.如图7所示,计算机系统700包括中央处理单元(cpu)701,其可以根据存储在只读存储器(rom)702中的程序或者从存储部分708加载到随机访问存储器(ram)703中的程序而执行各种适当的动作和处理。在ram 703中,还存储有系统操作所需的各种程序和数据。cpu 701、rom 702以及ram 703通过总线704彼此相连。输入/输出(i/o)接口705也连接至总线704。
102.以下部件连接至i/o接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(crt)显示器、液晶显示器(lcd)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至i/o接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
103.特别地,根据本公开的实施例,下文参考流程图描述的过程可以被实现为计算机
软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理单元(cpu)701执行时,执行本技术的方法和装置中限定的各种功能。
104.作为另一方面,本技术还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如上述实施例中所述的方法。
105.需要说明的是,本公开所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd

rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。
106.附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
107.应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献