用于执行网页任务的方法和装置的制造方法

文档序号:9349847阅读:228来源:国知局
用于执行网页任务的方法和装置的制造方法
【技术领域】
[0001]本发明涉及网络技术,并具体地涉及一种用于执行网页任务的方法和装置。
【背景技术】
[0002]作为Web2.0的核心技术,Ajax通过异步方式,在不刷新页面的情况下从服务器获取数据。Ajax不阻塞用户请求,提高了页面响应速度,降低了服务器的压力,给Web系统用户体验带来了质的飞越。
[0003]但是Ajax的大量使用,使前端页面代码充斥着大量的异步事件,它们可能在任何时刻以随机顺序被触发。当业务逻辑需要多个操作保持特定顺序,而这些操作又依赖多个异步请求时,问题就变得非常复杂。
[0004]在处理异步顺序问题时,现有的方式采用Ajax回调方法,即当Ajax请求成功或者失败后,在回调函数中处理下一步的操作。但是,当多个异步操作存在依赖关系时或一个操作依赖多个异步操作时,通过回调方式很难进行处理。这不仅给开发人员带来挑战,而且还具有以下缺点:
[0005]1.代码结构复杂,难以理解和维护,效率低下。如果有复杂的依赖关系,例如:Ajax任务C同时依赖Ajax任务A和ajax任务B,那么只能先执行Ajax任务A,再在A的回调函数中执行任务B,然后在B的回调函数中执行任务C。这样不仅程序复杂,而且A和B需要顺序执行,没有并发执行,效率低下。
[0006]2.异步调用顺序难以保证,容易引发系统bug,而且bug具有随机性,难以发现。
[0007]3.同步调用会锁住页面,影响用户体验,效率低下。
[0008]4.依赖关系不能实现定制。当前端业务需要灵活配置的异步流程时,如使用Ajax回调方法处理异步请求顺序问题,需要复杂的控制逻辑。流程无法修改,更不能实现灵活配置。

【发明内容】

[0009]为了解决以上存在的至少一个问题,本发明提出了一种用于执行网页任务的方法和装置。
[0010]根据本发明的一个方面,提出了一种用于执行网页任务的方法,包括:a)确定任务队列中的各个任务的任务关系山)根据所述任务关系确定当前状态下可执行的任务,其中只有任务的所有前驱任务都已被执行时,所述任务才被确定为可执行的任务;以及c)为每个可执行的任务分别创建任务代理,并通过所创建的任务代理分别执行相应的可执行的任务。
[0011]优选地,所述方法在步骤c之后还包括:d)当任何一个任务执行完毕后,回到步骤
bo
[0012]优选地,所述方法在步骤a之前还包括:e)创建任务队列或更新已有的任务队列。
[0013]优选地,为所述任务队列中的每个任务指定以下各项中的至少一个:任务类型、前驱任务列表、后继任务列表以及执行条件。
[0014]优选地,所述任务类型包括:同步任务和/或异步任务。
[0015]优选地,所述任务关系包括:依赖关系和/或执行条件。
[0016]优选地,所述依赖关系是基于前驱任务列表和/或后继任务列表确定的。
[0017]优选地,步骤b包括:如果存在针对任务的执行条件,则只有当所述执行条件被满足时,所述任务才被确定为可执行的任务。
[0018]根据本发明的另一方面,还提出了一种用于执行网页任务的设备,包括:关系确定装置,用于确定任务队列中的各个任务的任务关系;可执行任务确定装置,用于根据所述任务关系确定当前状态下可执行的任务,其中只有任务的所有前驱任务都已被执行时,所述任务才被确定为可执行的任务;以及执行装置,用于为每个可执行的任务分别创建任务代理,并通过所创建的任务代理分别执行相应的可执行的任务。
[0019]通过以上所提出的方法和设备,不仅解决了包含Ajax异步调用的多个互相依赖的功能模块的顺序问题,使业务逻辑代码与异步顺序控制解耦,而且还使页面既具有Ajax异步性的便利,并同时能根据用户指定的顺序依次执行。所提出的方案支持对多个相互依赖的异步流程的灵活定制。
【附图说明】
[0020]图1是根据本发明的一种实施例的执行网页任务的方法的流程图;
[0021]图2是根据本发明的一种实施例的执行网页任务的设备的结构框图;
[0022]图3是不例性的任务依赖关系图;
[0023]图4是根据本发明的一种具体实施例的详细流程。
【具体实施方式】
[0024]以下结合附图对本发明的【具体实施方式】进行具体说明。
[0025]首先参见图1,图1是根据本发明的一种实施例的执行网页任务的方法100的流程图。如图所示,所示方法100起始于步骤S110,确定任务队列中的各个任务的任务关系。接着,在步骤S120中,根据所述任务关系确定当前状态下可执行的任务,其中只有任务的所有前驱任务都已被执行时,所述任务才被确定为可执行的任务。最后,在步骤S130中,为每个可执行的任务分别创建任务代理,并通过所创建的任务代理分别执行相应的可执行的任务。
[0026]在步骤SllO中,首先确定任务队列中的各个任务的任务关系。
[0027]其中,任务是对应于需要同步的操作的代码序列的组合。任务队列是用户需要执行的多个相互依赖的任务的集合。为了实现任务的自动调度,可以把多个任务以一个Javascript (Js)无参数函数funct1n {任务I,任务2----}包含起来。
[0028]任务包括两种任务类型,即同步任务和异步任务。异步任务指Ajax异步请求数据任务,这是主要需要同步代码内容。同步任务则是不包含Ajax异步请求的任何Js代码(例如dom操作,数据处理等)。
[0029]优选地,可以指明任务的任务类型是同步任务还是异步任务,以便于创建不同的任务代理。
[0030]所述任务关系包括:依赖关系和/或执行条件。
[0031]所述依赖关系是基于前驱任务列表和/或后继任务列表确定的。任务的前驱任务列表由任务的所有前驱任务构成。任务的后继任务列表由任务的所有后继任务构成。前驱任务表示所述任务所依赖于的任务,即只有全部前驱任务执行完毕后,才可执行所述任务。后继任务表示依赖于所述任务的任务,即只有执行完所述任务后,才有可能执行任何后继任务(必要条件,不一定是充分的)。
[0032]所述执行条件是决定是否能够执行所述任务的条件。如果存在针对某一任务的执行条件,则即使该任务的所有前驱任务都已执行完毕,也需要判断所述执行条件,只有当所述执行条件被满足时才可执行所述任务。优选的,所述执行条件可以是某一前驱节点的成功或失败。
[0033]优选地,在执行步骤SllO之前,需要创建任务队列或更新已有的任务队列,并为每个任务指定以下各项中的至少一个:任务类型、前驱任务列表、后继任务列表以及执行条件。
[0034]在一种优选的实施例中,可通过创建依赖关系图来确定所述任务关系。如图3所示,依赖关系图是一个有向无环图,可以表示出任务的依赖关系。每个节点代表一个任务,深色节点代表异步任务,白色节点代表同步任务。Ajax属于异步任务,异步任务一般会有两个分支,一个代表成功返回,一个代表失败。同步任务主要指一些非异步操作,例如,运算或者dom操作等。任务之间连线代表依赖关系,依赖的任务执行完,才可以执行后续任务。优选的,所述依赖关系图还可表示出执行条件。例如:成功执行一个分支,失败执行另一个分支。此外,有些任务不需要执行条件,即只要前驱任务完成后,就可以启动。<
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1