一种响应消息的执行方法和装置的制作方法

文档序号:6467680阅读:190来源:国知局
专利名称:一种响应消息的执行方法和装置的制作方法
技术领域
本发明涉及网页开发领域,特别是涉及一种响应消息的执行方法和装置。
背景技术
AJAX ( Asynchronous JavaScript and XML,异步JavaScript和XML )
是指一种创建交互式网页应用的网页开发技术。在交互式网页的操作过程中, 当客户端的一个操作分别向服务器端发送了多个AJAX请求时,服务器端作 为服务的提供者,随时接收AJAX请求,待处理完AJAX请求后再将响应消 息发送到客户端。但是,由于服务器端的处理速度以及网络等因素,有可能 会将后接收到的AJAX请求先处理完并将响应消息先发送给客户端,而将先 接收到的AJAX请求后处理完并将响应消息后发送给客户端,从而会使客户 端不能够按照发送AJAX请求的顺序去执行AJAX请求的响应消息,进而导 致业务处理发生逻辑错误。
例如当业务系统中需要提交一张单据时,客户端发送2个AJAX请求 给服务器端。其中,第1个AJAX请求要求服务器端将单据结果保存到数据 库,第2个AJAX请求要求服务器端选中界面上单据列表组件中新增加的这 张单据。如果服务器端对第1个AJAX请求所需要做的处理比较复杂,对第2 个AJAX请求所需要做的处理比较简单,那么第2个AJAX请求的响应消息 就会在第1个AJAX请求的响应消息之前返回,此时界面上的表格中还没有 出现刚刚新增的单据,从而导致第2个AJAX请求的执行发生错误。

发明内容
本发明实施例提供了 一种响应消息的执行方法和装置,以使得客户端能 够以正常的业务处理逻辑进行业务处理。
本发明实施例公开了一种响应消息的执行方法,包括接收服务器端返 回的响应消息;获得所述响应消息的执行序号,其中,每一个响应消息与其 对应的请求消息采用同一个执行序号,各个执行序号按照各个请求消息的发
送顺序依次排序;以各个响应消息所对应的请求消息的发送顺序为依据,根
据所述执行序号,在当前已经接收但未被执行的响应消息中,判断是否包括 当前要执行的响应消息,如果是,执行所述响应消息,并返回所述判断的步 骤,否则,将当前接收的所述响应消息进行緩存,并返回所述接收响应消息 的步骤。
优选的,所述方法还包括当判断所述緩存中包括当前要执行的响应消 息并执行所述响应消息后,从所述緩存中删除所述响应消息。 优选的,所述获得响应消息的执行序号包括
创建所述响应消息的回调函数的拷贝函数,在所述拷贝函数中设置指示 所述响应消息执行顺序的执行序号;读取所述拷贝函数,获得所述响应消息 的执行序号。
优选的,所述当前要执行的响应消息具体为在未被执行的响应消息中, 最d 、执行序号所对应的响应消息。
优选的,所述根据执行序号,在当前已经接收但未被执行的响应消息中, 判断是否包括当前要执行的响应消息包括按照响应消息的执行顺序,将所 述响应消息的执行序号和回调函数依次存储在第一队列中;读取所述第一队 列的第一个元素,获得当前要执行的响应消息的执行序号;判断所述响应消 息的执行序号是否与所述当前要执行的响应消息的执行序号相同。
优选的,所述执行响应消息包括读取所述第一队列的第一元素,获得 所述响应消息的回调函数;由所述回调函数执行所述响应消息,在执行完所 述响应消息后删除所述第 一 队列的第 一个元素。
优选的,所述将当前接收的响应消息进行緩存具体为将所述当前接收 的响应消息和所述响应消息的执行序号存储在第二队列中。
本发明实施例公开了一种响应消息的执行装置,包括接收单元,用于 接收服务器端返回的响应消息;获取单元,用于获得所述响应消息的执行序 号,其中,每一个响应消息与其对应的请求消息采用同一个执行序号,各个 执行序号按照各个请求消息的发送顺序依次排序;判断单元,用于以各个响 应消息所对应的请求消息的发送顺序为依据,根据所述执行序号,在当前已 经接收但未被执行的响应消息中,判断是否包括当前要执行的响应消息;执
行单元,用于当所述判断单元的判断结果为是时,执行所述响应消息,并返 回所述判断单元;緩存单元,用于当所述判断单元的判断结果为否时,将当 前接收的所述响应消息进行緩存,并返回所述接收单元。
优选的,所述装置还包括第一删除单元,用于当判断所述緩存中包括 当前要执行的响应消息并执行所述响应消息后,从所述緩存中删除所述响应 消息。
优选的,所述获取单元包括创建单元,用于创建所述响应消息的回调 函数的拷贝函数,在所述拷贝函数中设置指示所述响应消息执行顺序的执行 序号;第一读取单元,用于读取所述拷贝函数,获得所述响应消息的执行序号。
优选的,所述判断单元包括存储单元,用于按照响应消息的执行顺序, 将所述响应消息的执行序号和回调函数依次存储在第一队列中;第二读取单 元,用于读取所述第一队列的第一个元素,获得当前要执行的响应消息的执 行序号;判断子单元,用于判断所述响应消息的执行序号是否与所述当前要 执行的响应消息的执行序号相同。
优选的,所述执行单元包括第三读取单元,用于读取所述第一队列的 第一元素,获得所述响应消息的回调函数;执行子单元,用于由所述回调函 数执行所述响应消息;第二删除单元,用于在执行完所述响应消息后删除所 述第一队列的第一个元素。
由上述实施例可以看出,当接收到服务器端返回的响应消息后,没有立 刻执行响应消息,而是根据该响应消息的执行序号判断该响应消息是否为当 前要执行的响应消息,当判定该响应消息不是当前要执行的响应消息时,把 该响应消息先緩存在一个队列中。然后从这个队列中查找当前要执行的响应 消息,并执行响应消息,从而依次地按照发送的顺序执行服务器端返回的响 应消息,使客户端能够按照正常的业务处理逻辑进行业务处理。


图1为本发明一种响应消息的执行方法的第一个实施例的流程图; 图2为本发明中存有两个响应消息和执行序号的第一队列示意图; 图3为本发明中存有三个响应消息的执行序号和回调函数的第二队列示
意图4为本发明一种响应消息的执行装置的第一个实施例的结构图; 图5为本发明一种响应消息的执行方法的第二个实施例的流程图; 图6为本发明一种响应消息的执行装置的第二个实施例的结构图。
具体实施例方式
本发明实施例提供了响应消息的执行方法和装置。首先,接收服务器端 返回的响应消息;然后,获得所述响应消息的执行序号,其中,每一个响应 消息与其对应的请求消息釆用同一个执行序号,各个执行序号按照各个请求 消息的发送顺序依次排序;最后,以各个响应消息所对应的请求消息的发送 顺序为依据,根据所述执行序号,在当前已经接收但未被执行的响应消息中, 判断是否包括当前要执行的响应消息,如果是,执行所述响应消息,并返回 所述判断的步骤,否则,将当前接收的所述响应消息进行緩存,并返回所述 接收响应消息的步骤。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图 对本发明实施例进行详细描述。
本发明可用于众多通用或专用的计算系统环境或配置中。例如个人计 算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、 包括以上任何系统或设备的分布式计算环境等等。
本发明可以在由计算机执行的计算机可执行指令的 一般上下文中描述, 例如程序模块。 一般地,程序模块包括执行特定任务或实现特定抽象数据类 型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中 实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处 理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备 在内的本地和远程计算机存储介质中。
请参阅图1,其为本发明一种响应消息的执行方法的第一个实施例的流程 图,该方法包括以下步骤
步骤101:接收服务器端返回的响应消息;
其中,以客户端在一次操作中分别发出A、 B和C三个请求为例,每个
请求都有一个与其相对应的回调函数,当服务器端接收到客户端发送的请求 并将响应消息返回给客户端的时候,就会触发相应的回调函数,告知客户端
该请求已经得到了响应,进而使客户端执行响应消息。其中,AJAX组件是浏 览器提供的一种客户端与服务器端通信的组件,例如,当客户端发起请求A 时,会将请求A的请求地址和回调函数两个参数发送给AJAX组件,由AJAX 组件根据提供的请求地址向服务器端发起请求,并等待服务器端的响应。服 务器端接收到请求A后,先进行一系列处理,处理结束后再返回一个响应消 息,AJAX组件收到了服务器端的响应消息后,将触发回调函数,通知客户端 服务器端已经对请求A进行了响应,并由回调函数执行请求A的响应消息。
本实施例中,请求A的响应消息为A',请求B的响应消息为B',请求C 的响应消息为C',并假设服务器端返回响应消息的顺序为B'、 C'、 A'。
步骤102:识别为所述响应消息预设的顺序标识,获得所述响应消息的执 行序号;
其中,为响应消息预设顺序标识包括将业务请求的发送顺序作为与所 述业务请求相对应的响应消息的执行顺序,为响应消息设置指示所述响应消 息执行顺序的顺序标识。在本实施例中,发送顺序为A、 B、 C,响应消息的 4丸行顺序应该为A'、 B'、 C'。
识别为响应消息预设顺序标识,获得所述执行序号包括创建所述响应 消息的回调函数的拷贝函数,在所述拷贝函数中设置指示所述响应消息执行 顺序的顺序标识;读取所述拷贝函数中的所述顺序标识,获得所述响应消息 的执行序号。在本实施例中,发送请求A、 B和C时,分别为这三个请求创 建其回调函数的拷贝函数,在拷贝函数中通过设置一个成员变量来保存响应 消息的执行序号,响应消息A'、 B'、 C'的执行序号分别为l、 2、 3。
根据本实施例中步骤102的假设,首先接收到的是响应消息B',因此, 在接收到响应消息B'后触发相应的拷贝函数,从拷贝函数中获得的执行序号 为2。
步骤103:根据所述响应消息的执行序号判断所述响应消息是否为当前要 4丸行的响应消息,如果是,进入步骤104,如果否,进入步骤105; 步骤104:执行所述响应消息,进入步骤106;
步骤105:将所述响应消息和所述响应消息的执行序号存储在第二队列 中,返回步骤IOI,直到所有响应消息执行完毕为止。
其中,当前要执行的响应消息为在未执行的响应消息中,最小执行序号 所对应的响应消息。在本实施例中,初始状态下三个响应消息都没有执行, 最小执行序号为1,此时从响应消息B'的回调函数的拷贝函数中获得的执行序 号为2,因此,判定响应消息B'不是当前应该扭J亍的响应消息,将响应消息 B'和执行序号2存储在第二队列中。
随后,接收响应消息C',获得响应消息C'的执行序号为3,判定响应消 息C'也不是当前应该执行的响应消息,将响应消息C'和执行序号3也存储在 第二队列中,如图2所示。
最后,接收响应消息A',获得响应消息A'的执行序号为1,判定响应消 息A'是当前应该执行的响应消息,执行响应消息A'。
这里,可以按照响应消息的执行顺序将三个响应消息的执行序号和回调 函数分别存储在第一队列中,如图3所示,从第一队列中的第一个元素中所 提取的执行序号即为当前要执行的响应消息的执行序号,当判断接收的响应 消息为当前要#1行的响应消息时,由第一个元素中的回调函数执行该响应消 息,然后删除第一队列中的第一个元素,使原队列中的第二个元素成为新队 列中的第 一个元素。在判断下一个响应消息是否为当前要执行的响应消息时, 继续从队列中提取第一个元素,即原队列中的第二个元素,以此类推。
步骤106:根据第二队列中的响应消息的执行序号,判断所述第二队列中 的响应消息是否为当前要执行的响应消息,如果是,进入步骤104,如果否, 进入步骤101。
其中,在执行响应消息A'之前,所述第二队列中不存在当前要执行的响 应消息,因此会返回到步骤IOI,等待接收下一个响应消息,当执行了响应消 息A'之后,当前要执行的响应消息的执行序号为2,遍历第二队列,判断第二 队列中的响应消息是否为当前要执行的响应消息B',当存在时,执4亍响应消 息B',此时更新当前要执行的响应消息的执行序号为3,继续遍历第二队列, 判断第二队列中的响应消息是否为当前要执行的响应消息C',当存在时,执 行响应消息C',所有响应消息才丸行完毕。
与上述一种响应消息的执行方法相对应,本发明实施例还提供了 一种响 应消息的执行装置。请参阅图4,其为本发明一种响应消息的执行装置的第一
实施例结构图,该装置包括接收单元401、获取单元402、判断单元403、执 行单元404和緩存单元405。下面结合该装置的工作原理进一步介绍其内部结 构以及连接关系。
接收单元401,用于接收服务器端返回的响应消息;
获取单元402,用于获得所述响应消息的执行序号,其中,每一个响应消 息与其对应的请求消息采用同一个执行序号,各个执行序号按照各个请求消
息的发送顺序依次排序;
判断单元403,用于以各个响应消息所对应的请求消息的发送顺序为依 据,根据所述执行序号,在当前已经接收但未被执行的响应消息中,判断是 否包括当前要#(^亍的响应消息;
执行单元404,用于当所述判断单元的判断结果为是时,执行所述响应消 息,并返回判断单元403;
緩存单元405,用于当所述判断单元的判断结果为否时,将当前接收的所 述响应消息进行緩存,并返回接收单元401 。
其中,获取单元402包括创建单元406,用于创建所述响应消息的回调函 数的拷贝函数,在所述拷贝函数中设置指示所述响应消息执行顺序的执行序 号;第一读取单元407,用于读取所述拷贝函数,获得所述响应消息的执行序 号。
判断单元403包括存储单元408,用于按照响应消息的执行顺序,将所 述响应消息的执行序号和回调函数依次存储在第 一 队列中;第二读取单元 409,用于读取所述第一队列的第一个元素,获得当前要执行的响应消息的执 行序号;判断子单元410,用于判断所述响应消息的执行序号是否与所述当前 要执行的响应消息的执行序号相同。
执行单元404包括第三读取单元411,用于读取所述第一队列的第一元 素,获得所述响应消息的回调函数;执行子单元412,用于由所述回调函数执 行所述响应消息;第二删除单元413,用于在^L行完所述响应消息后删除所述
第一队列的第一个元素。
由上述实施例可以看出,当接收到服务器端返回的响应消息后,没有立 刻执行响应消息,而是根据该响应消息的执行序号判断该响应消息是否为当 前要执行的响应消息,当判定该响应消息不是当前要执行的响应消息时,把 该响应消息先緩存在一个队列中。然后从这个队列中查找当前要执行的响应 消息,并执行响应消息,从而依次地按照发送的顺序执行服务器端返回的响 应消息,使客户端能够按照正常的业务处理逻辑进行业务处理。
请参阅图5,其为本发明一种响应消息的执行方法的第二个实施例的流程 图,本实施例与上述实施例的不同之处在于,当判定第一队列中的某个响应 消息为当前要执行的响应消息,并执行所述响应消息后,还包括从第 一 队列
中删除所述响应消息和所述响应消息的执行序号,该方法包括以下步骤 步骤501:接收服务器端返回的响应消息;
步骤502:识别为所述响应消息预设的顺序标识,获得所述响应消息的执
行序号;
步骤503:根据所述响应消息的执行序号判断所述响应消息是否为当前要 执行的响应消息,如果是,进入步骤504,如果否,进入步骤505; 步骤504:执行所述响应消息,进入步骤506;
步骤505:将所述响应消息和所述响应消息的执行序号存储在第二队列 中,返回步骤IOI,直到所有响应消息执行完毕为止。
步骤506:根据第二队列中的响应消息的执行序号,判断所述第二队列中 的响应消息是否为当前要执行的响应消息,如果是,进入步骤507,如果否, 进入步骤501;
步骤507:执行所述响应消息,从第二队列中删除所述响应消息和所述响 应消息的执行序号,返回步骤506。
与上述一种响应消息的执行方法相对应,本发明实施例还提供了 一种响 应消息的执行装置。请参阅图6,其为本发明一种响应消息的执行装置的第二 实施例结构图,该装置包括接收单元601、获取单元602、判断单元603、执行单元604、緩存单元605和第一删除单元606。下面结合该装置的工作原理 进一步介绍其内部结构以及连接关系。
接收单元601,用于接收服务器端返回的响应消息;
获取单元602,用于获得所述响应消息的执行序号,其中,每一个响应消 息与其对应的请求消息采用同一个执行序号,各个执行序号按照各个请求消
息的发送顺序依次排序;
判断单元603,用于以各个响应消息所对应的请求消息的发送顺序为依 据,根据所述执行序号,在当前已经接收但未被执行的响应消息中,判断是 '否包括当前要执行的响应消息;
执行单元604,用于当所述判断单元的判断结果为是时,执行所述响应消 息,并返回判断单元603;
緩存单元605,用于当所述判断单元的判断结果为否时,将当前接收的所 述响应消息进行緩存,并返回接收单元601。
第一删除单元606,用于当判断所述緩存中包括当前要执行的响应消息并 执行所述响应消息后,从所述緩存中删除所述响应消息。
其中,获取单元602包括创建单元,用于创建所述响应消息的回调函数 的拷贝函数,在所述拷贝函数中设置指示所述响应消息执行顺序的执行序号; 第一读取单元,用于读取所述拷贝函数,获得所述响应消息的执行序号。
判断单元603包括存储单元,用于按照响应消息的执行顺序,将所述 响应消息的执行序号和回调函数依次存储在第一队列中;第二读取单元,用 于读取所述第 一队列的第 一个元素,获得当前要执行的响应消息的执行序号; 判断子单元,用于判断所述响应消息的执行序号是否与所述当前要执行的响 应消息的执行序号相同。
执行单元404包括第三读取单元,用于读取所述第一队列的第一元素, 获得所述响应消息的回调函数;执行子单元,用于由所述回调函数执行所述 响应消息;第二删除单元,用于在执行完所述响应消息后删除所述第一队列 的第一个元素。
由上述实施例可以看出,当接收到服务器端返回的响应消息后,没有立 刻执行响应消息,而是根据该响应消息的执行序号判断该响应消息是否为当
前要执行的响应消息,当判定该响应消息不是当前要执行的响应消息时,把 该响应消息先緩存在一个队列中。然后从这个队列中查找当前要执行的响应 消息,并执行响应消息,从而依次地按照发送的顺序执行服务器端返回的响 应消息,使客户端能够按照正常的业务处理逻辑进行业务处理。
此外,当从所述队列中查找到当前要执行的响应消息,并执行响应消息 后,从所述队列中删除已经执行的响应消息,从而避免下次再判断所述队列 中的响应消息是否为当前要执行的响应消息时,重复判断已经被执行的响应 消息。
以上对本发明所提供的 一 种响应消息的执行方法和装置进行了详细介
领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均 会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1、一种响应消息的执行方法,其特征在于,所述方法包括接收服务器端返回的响应消息;获得所述响应消息的执行序号,其中,每一个响应消息与其对应的请求消息采用同一个执行序号,各个执行序号按照各个请求消息的发送顺序依次排序;以各个响应消息所对应的请求消息的发送顺序为依据,根据所述执行序号,在当前已经接收但未被执行的响应消息中,判断是否包括当前要执行的响应消息,如果是,执行所述响应消息,并返回所述判断的步骤,否则,将当前接收的所述响应消息进行缓存,并返回所述接收响应消息的步骤。
2、 根据权利要求1所述的方法,其特征在于,所述方法还包括当判断所述緩存中包括当前要执行的响应消息并执行所述响应消息后, 从所述緩存中删除所述响应消息。
3、 根据权利要求1所述的方法,其特征在于,所述获得响应消息的执行序号包括创建所述响应消息的回调函数的拷贝函数,在所述拷贝函数中设置指示 所述响应消息执行顺序的执行序号;读if又所述拷贝函数,获得所述响应消息的执行序号。
4、 根据权利要求3所述的方法,其特征在于,所述当前要执行的响应消 息具体为在未被执行的响应消息中,最小执行序号所对应的响应消息。
5、 根据权利要求1所述的方法,其特征在于,所述根据执行序号,在当 前已经接收但未被执行的响应消息中,判断是否包括当前要执行的响应消息 包括按照响应消息的执行顺序,将所述响应消息的执行序号和回调函数依次 存储在第一队列中;读取所述第一队列的第一个元素,获得当前要执行的响应消息的执行序号;判断所述响应消息的执行序号是否与所述当前要执行的响应消息的执行序号相同。
6、 根据权利要求5所述的方法,其特征在于,所述执行响应消息包括 读取所述第 一队列的第 一元素,获得所述响应消息的回调函数;由所述回调函凄t^^亍所述响应消息,在#^亍完所述响应消息后删除所述 第一队列的第一个元素。
7、 根据权利要求1所述的方法,其特征在于,所述将当前接收的响应消 息进行緩存具体为将所述当前接收的响应消息和所述响应消息的执行序号存储在第二队列中。
8、 一种响应消息的执行装置,其特征在于,所述装置包括 接收单元,用于接收服务器端返回的响应消息;获取单元,用于获得所述响应消息的执行序号,其中,每一个响应消息 与其对应的请求消息采用同一个执行序号,各个执行序号按照各个请求消息 的发送顺序依次排序;判断单元,用于以各个响应消息所对应的请求消息的发送顺序为依据, 根据所述执行序号,在当前已经接收但未被执行的响应消息中,判断是否包 括当前要执行的响应消息;执行单元,用于当所述判断单元的判断结果为是时,执行所述响应消息, 并返回所述判断单元;緩存单元,用于当所述判断单元的判断结果为否时,将当前接收的所述 响应消息进行緩存,并返回所述接收单元。
9、 根据权利要求8所述的装置,其特征在于,所述装置还包括第 一删除单元,用于当判断所述缓存中包括当前要执行的响应消息并执 行所述响应消息后,从所述緩存中删除所述响应消息。
10、 根据权利要求8所述的装置,其特征在于,所述获取单元包括 创建单元,用于创建所述响应消息的回调函数的拷贝函数,在所述拷贝函数中设置指示所述响应消息执行顺序的执行序号;第一读取单元,用于读取所述拷贝函数,获得所述响应消息的执行序号。
11、 根据权利要求8所述的装置,其特征在于,所述判断单元包括 存储单元,用于按照响应消息的执行顺序,将所述响应消息的执行序号 和回调函数依次存储在第一队列中;第二读取单元,用于读取所述第一队列的第一个元素,获得当前要执行的响应消息的执行序号;判断子单元,用于判断所述响应消息的执行序号是否与所述当前要执行的响应消息的执行序号相同。
12、根据权利要8所述的装置,其特征在于,所述执行单元包括 第三读取单元,用于读取所述第一队列的第一元素,获得所述响应消息的回调函凄史;执行子单元,用于由所述回调函数执行所述响应消息;第二删除单元,用于在执行完所述响应消息后删除所述第 一队列的第一个元素。
全文摘要
本发明公开了一种响应消息的执行方法和装置。其中,所述方法包括接收服务器端返回的响应消息;获得所述响应消息的执行序号,其中,每一个响应消息与其对应的请求消息采用同一个执行序号,各个执行序号按照各个请求消息的发送顺序依次排序;以各个响应消息所对应的请求消息的发送顺序为依据,根据所述执行序号,在当前已经接收但未被执行的响应消息中,判断是否包括当前要执行的响应消息,如果是,执行所述响应消息,并返回所述判断的步骤,否则,将当前接收的所述响应消息进行缓存,并返回所述接收响应消息的步骤。根据本发明实施例,可以使客户端以正常的业务处理逻辑进行业务处理。
文档编号G06F9/44GK101388039SQ200810172730
公开日2009年3月18日 申请日期2008年11月11日 优先权日2008年11月11日
发明者旭 张 申请人:深圳市金蝶中间件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1