CN110995817B - 请求回调方法、装置及客户端设备 - Google Patents
请求回调方法、装置及客户端设备 Download PDFInfo
- Publication number
- CN110995817B CN110995817B CN201911184317.4A CN201911184317A CN110995817B CN 110995817 B CN110995817 B CN 110995817B CN 201911184317 A CN201911184317 A CN 201911184317A CN 110995817 B CN110995817 B CN 110995817B
- Authority
- CN
- China
- Prior art keywords
- asynchronous request
- server
- auxiliary object
- responded
- asynchronous
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/522—Barrier synchronisation
Abstract
本申请公开了一种请求回调方法、装置及客户端设备,涉及计算机技术领域。其中,该方法包括:针对发送给服务端设备的需要统一回调的各异步请求,依次检测每个异步请求是否被服务端设备响应;若当前检测的异步请求被服务端设备响应,则检测下一个异步请求是否被服务端设备响应;若当前检测的异步请求当前没有被服务端设备响应,则等待服务端设备响应当前检测的异步请求,并在确定当前检测的异步请求被服务端设备响应时,检测下一个异步请求是否被服务端设备响应;当确定各异步请求均被服务端设备响应时,对各异步请求执行统一回调。如此,可以降低客户端设备对各异步请求进行回调的性能开销。
Description
技术领域
本申请涉及计算机技术领域,更具体地,涉及一种请求回调方法、装置及客户端设备。
背景技术
为了实现某个功能,客户端需要向服务端发出多个异步请求,并在该多个异步请求均完成时统一执行特定操作。因此,需要检测发出的多个异步请求均完成的时间点。常用的检测多个异步请求均完成的时间点的方式,性能开销较大,效率较低。
发明内容
鉴于上述问题,本申请提出了一种请求回调方法、装置及客户端设备,以改善上述问题。
第一方面,本申请实施例提供了一种请求回调方法,应用于与服务端设备通信的客户端设备,该方法包括:针对发送给所述服务端设备的需要统一回调的各异步请求,依次检测每个所述异步请求是否被所述服务端设备响应;若确定当前检测的所述异步请求被所述服务端设备响应,则检测下一个所述异步请求是否被所述服务端设备响应;若确定当前检测的所述异步请求当前没有被所述服务端设备响应,则等待所述服务端设备响应当前检测的所述异步请求,并在确定当前检测的所述异步请求被所述服务端设备响应时,检测下一个所述异步请求是否被所述服务端设备响应;当确定各所述异步请求均被所述服务端设备响应时,对各所述异步请求执行所述统一回调。
第二方面,本申请实施例提供了一种请求回调装置,应用于与服务端设备通信连接的客户端设备,包括:检测模块,用于针对发送给所述服务端设备的需要统一回调的各异步请求,依次检测每个所述异步请求是否被所述服务端设备响应;若确定当前检测的所述异步请求被所述服务端设备响应,则检测下一个所述异步请求是否被所述服务端设备响应;若确定当前检测的所述异步请求当前没有被所述服务端设备响应,则等待所述服务端设备响应当前检测的所述异步请求,并在确定当前检测的所述异步请求被所述服务端设备响应时,检测下一个所述异步请求是否被所述服务端设备响应;回调模块,用于当确定各所述异步请求均被所述服务端设备响应时,对各所述异步请求执行所述统一回调。
第三方面,本申请实施例提供了一种客户端设备,包括:一个或多个处理器;存储器;一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由一个或多个处理器执行,所述一个或多个程序配置用于执行上述的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有程序代码,所述程序代码可被处理器调用执行上述的方法。
相对于现有技术,本申请提供的方案,客户端设备在依次检测到最后一个异步请求,并确定该异步请求已被服务端设备响应时,即可确定需要统一回调的所有异步请求均已被服务端设备响应,而无需对所有异步请求是否被响应进行反复检测,减少了客户端设备的工作量,降低了客户端设备的性能开销。
此外,通过本申请提供的方案,客户端设备一次只需检测一个异步请求是否被响应,避免了客户端设备的多个线程同时检测一个异步请求的完成情况所导致的多线程数据竞争问题,从而避免了因多线程数据竞争所导致的数据混乱。
本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了一种适用于本申请实施例的应用环境示意图。
图2示出了根据本申请一个实施例的请求回调方法的流程示意图。
图3示出了根据本申请另一实施例的请求回调方法的流程示意图。
图4示出了根据本申请另一实施例的请求回调方法的流程示意图。
图5示出了图4中步骤S360的子步骤示意图。
图6示出了客户端设备按照图4所示流程对异步请求进行回调的示意图。
图7示出了根据本申请又一实施例的请求回调方法的流程示意图。
图8是本申请实施例的用于执行根据本申请实施例的请求回调方法的客户端设备的框图。
图9示出了根据本申请实施例的请求回调装置的框图。
图10是本申请实施例的用于保存或者携带实现根据本申请实施例的请求回调方法的程序代码的存储单元。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
为了实现某些功能,客户端需要向服务端发送多个异步请求,该多个异步请求通常由不同线程发出。客户端需要在服务端完成该多个异步请求时,再统一进行后续操作。针对这种情况,客户端需要确定多个异步请求均完成的时间点。一些实施方式中,通常是由客户端中发出异步请求的线程在该异步请求完成时,设置该异步请求的标志位,并读取其他异步请求的标志位的值,以判断读取到的值是否被设置为表示已完成的值。
经研究发现,采用上述方式,存在如下缺陷:
一、以一个线程为例,当该线程读取到某些异步请求的标志位的值不是表示已完成的值时,该线程需要重新检测所有异步请求的标志位的值,直至确定所有异步请求的标志位的值均为表示已完成的值,再进行回调。服务端设备对不同异步请求的响应时长通常是不同的,因而,客户端设备的每个线程通常需要多次对所有异步请求的标志位进行检测,才能确定所有异步请求完成的时间点,性能开销非常大。
二、由于每个线程都需要读取所有异步请求的标志位至少一次,容易出现客户端设备的多个线程同时读取同一异步请求的标志位的情况,从而导致多线程数据竞争,出现数据混乱。
为了至少部分地改善上述问题,本申请实施例提供一种请求回调方法、装置及客户端设备,下面对该内容进行详细阐述。
请参照图1,图1为本申请实施例提供的应用场景示意图。客户端设备100与服务端设备200通过网络通信连接,其中,服务端设备200可以是运行有服务端程序的设备,该设备例如可以是服务器或多个服务器组成的集群中的一个服务器。客户端设备200可以是运行有客户端程序的设备,比如智能手机、个人计算机等。其中,客户端程序可以是与服务端程序通信的应用程序(Application,APP)。
请参阅图2,图2为本申请一实施例提供的请求回调方法的流程示意图,该方法可以应用于图1所示的客户端设备100。下面对该方法的步骤进行阐述。
步骤S110,针对发送给所述服务端设备200的需要统一回调的各异步请求,依次检测每个所述异步请求是否被所述服务端设备200响应。
步骤S120,判断当前检测的所述异步请求是否被服务端设备200响应,若是,则执行步骤S130;若否,则执行步骤S140。
本实施例中,客户端设备100将需要统一回调的多个异步请求并行发送给服务端设备200,并在发送该多个异步请求之后,依次检测该多个异步请求中的每一个是否被服务端设备200响应。
步骤S130,检测下一个所述异步请求是否被所述服务端设备200响应。
步骤S140,等待所述服务端设备响应当前检测的所述异步请求,并在确定当前检测的所述异步请求被所述服务端设备200响应时,检测下一个所述异步请求是否被所述服务端设备200响应。
对于客户端设备100检测的每一个异步请求,如果确定该异步请求已经被服务端设备200响应,则直接对下一个异步请求进行检测;如果确定该异步请求当前没有被服务端设备200响应,则可以等到该异步请求被服务端设备200响应时,再对下一个异步请求进行检测。
以此类推,当检测至最后一个异步请求时,表示另外的所有异步请求均已被服务端设备200响应,只要该最后一个异步请求被服务端设备200响应,即可确定需要统一回调的各个异步请求均已被服务端设备200响应,从而可以按照步骤S140进行统一回调。
步骤S150,当确定各所述异步请求均被所述服务端设备响应时,对各所述异步请求执行所述统一回调。
本实施例中,所述统一回调可以是统一执行各异步请求对应的后续操作。例如,在各异步请求用于获取同一页面的页面数据的情况下,所述统一回调可以是至刷新各异步请求所请求的页面数据。
通过图2所示流程,客户端设备在依次检测至最后一个异步请求,并确定该异步请求被服务端设备响应时,即可确定需要统一回调的所有异步请求均已被服务端设备响应,而无需每个线程对所有异步请求的标志位进行反复检测,减少了客户端设备检测的数据量,降低了客户端设备的性能开销。
此外,采用本实施例的方案,客户端设备同一时间只需检测服务端设备对一个异步请求的响应情况,避免了多个线程同时对一个异步请求的响应情况进行检测所导致的多线程数据竞争问题,进而避免了由多线程数据竞争问题所导致的数据混乱。
请参照图3,图3为本申请另一实施例提供的请求回调方法的流程示意图,该方法可以应用于图1所示的客户端设备100。本实施例在前一实施例的基础上,详细阐述了客户端设备100检测服务端设备200是否响应异步请求的实现过程。下面对该方法包括的步骤进行阐述。
步骤S210,针对需要统一回调的各异步请求,在向服务端设备200发送每个所述异步请求之前,为所述异步请求设置包括标志位的辅助对象,并将所述异步请求发送给服务端设备200,所述标志位用于在所述服务端设备200响应所述异步请求时,被所述服务端设备设置为目标值。
本实施例中,需要统一回调的各异步请求通常带有相同的标识。比如,直播场景中,客户端设备100用于观看直播,服务端设备200用于提供直播服务,客户端设备100需要从服务端设备200获取直播页面P,该直播页面P包括多种数据,客户端设备100通常会发送多个异步请求来分别获取该多种数据。其中,分别用于获取同一直播页面P的多种数据的多个异步请求均带有该直播页面P的页面标识,可选地,该页面标识可以是直播页面P的页面ID(Identity,身份),也可以是直播页面P的URL(Uniform Response Locator,统一资源定位符)地址,本实施例对此没有限制。基于此,实施过程中,客户端设备100可以对每个异步请求中的页面标识进行识别,将具有相同页面标识的异步请求确定为需要统一回调的异步请求。
在确定需要统一回调的各异步请求之后,对于所确定的每个异步请求,客户端设备100为该异步请求生成一辅助对象,该辅助对象是包括与该异步请求对应的标志位的数据结构。异步请求对应的标志位的值,用于表示服务端设备200对该异步请求的响应情况,即表示服务端设备200是否完成对该异步请求的处理。本实施例采用目标值来表示异步请求已完成,对应地,可以将每个异步请求对应的标志位的初始值设置为与目标值不同的值,以表示该异步请求未被服务端设备200响应。比如,目标值可以为1,初始值可以为0。可以理解,此处描述的目标值仅为举例,目标值还可以是其他值。
实施过程中,服务端设备200可以接收客户端设备100发送的异步请求,并根据对异步请求的响应情况来设置该异步请求所对应的辅助对象中的标志位的值。比如,服务端设备200可以在完成对一个异步请求的处理并对该异步请求进行响应时,将该异步请求对应的辅助对象中的标志位的值置为1。未被响应的异步请求,其对应的辅助对象中标志位的值仍保持为0。在此情况下,若客户端设备100判断出一个异步请求对应的辅助对象中的标志位的值为1(目标值),则表示该异步请求已被服务端设备200响应,若客户端设备100判断出一个异步请求对应的辅助对象中的标志位的值不为1(比如为0),则表示该异步请求当前没有被服务端设备200响应。如此,客户端设备100可以根据每个异步请求对应的辅助对象中的标志位的值是否为目标值,来确定该异步请求是否已被服务端设备200响应。
步骤S220,依次访问每个所述异步请求对应的辅助对象,判断当前访问的辅助对象中的所述标志位的值是否为所述目标值。若是,则执行步骤S230;若否,则执行步骤S240。
步骤S230,确定当前访问的辅助对象对应的所述异步请求被所述服务端设备响应,访问下一个所述异步请求对应的辅助对象。
步骤S240,确定当前访问的辅助对象对应的所述异步请求当前没有被所述服务端设备200响应,等待该异步请求被所述服务端设备200响应,并在确定该异步请求被所述服务端设备200响应时,访问下一个所述异步请求对应的辅助对象。
本实施例中,客户端设备100在将需要统一回调的各异步请求并行发送给服务端设备200之后,依次访问每个异步请求对应的辅助对象。对于所访问的每个辅助对象,客户端设备100读取该辅助对象中的标志位的值,判断读取的值是否为目标值;如果是目标值,表示该辅助对象对应的异步请求已经被服务端设备200响应,则访问下一个异步请求对应的辅助对象;如果不是目标值,表示该辅助对象对应的异步请求当前没有被服务端设备200响应,则等待服务端设备200响应该辅助对象对应的异步请求,直到服务端设备200响应该异步请求,再继续访问下一个异步请求对应的辅助对象。对于下一个异步请求对应的辅助对象,客户端设备100对其访问的过程与前述过程类似,在此不再赘述。
其中,各异步请求对应的标志位是由服务端设备200分别根据各异步请求的完成情况进行设置的,彼此互不影响。因此,在客户端设备100等待服务端设备200响应某一异步请求的过程中,服务端设备200仍可以设置其他异步请求对应的标志位,从而减少了客户端设备100在检测到其他异步请求对应的标志位时,所需的等待时长,进而节约了确定各异步请求均完成的时间点这一过程所需的时长。
按照步骤S220-步骤S240进行处理,当客户端设备100访问至最后一个异步请求对应的辅助对象时,表示前面访问的所有异步请求对应的辅助对象中的标志位的值均已被设置为目标值,即前面访问的所有异步请求均已被服务端设备200响应,只要最后一个异步请求对应的辅助对象中的标志位的值为目标值,即可确定需要统一回调的所有异步请求均已被服务端设备200响应,从而按照步骤S250进行统一回调。
步骤S250,当确定各所述异步请求均被所述服务端设备响应时,对各所述异步请求执行统一回调。
本实施例中,步骤S250的实现流程与前述的步骤S140类似,在此不再赘述。
通过图3所示流程,客户端设备在依次访问至最后一个异步请求对应的辅助对象,并确定该辅助对象中的标志位的值为目标值时,即可确定所有异步请求均已被服务端设备响应,而无需对所有异步请求的标志位进行多次轮询,减少了所需检测的数据量,降低了性能开销。并且,由于一次只需检测一个辅助对象中的标志位,不会出现多个线程同时读取一个标志位的情况,从而避免了多线程数据竞争及因多线数据竞争导致的数据混乱问题。
请参照图4,图4示出了本申请另一实施例提供的一种请求回调方法的流程示意图,该方法可以应用于图1所示的客户端设备100。本实施例在前一实施例的基础上,对客户端设备100依次访问每个异步请求对应的辅助对象的方式,以及在当前访问的辅助对象中的标志位的值不是目标值的情况下,等待该辅助对象对应的异步请求被服务端设备200响应的具体方式,做出了进一步的限定。下面对本实施例提供的方法进行详细描述。
步骤S310,针对需要统一回调的各异步请求,在向服务端设备200发送每个所述异步请求之前,为所述异步请求设置包括标志位和代码块(block)的辅助对象,所述block用于将所述辅助对象中的所述标志位的值设置为表征已完成的目标值。
步骤S320,将所述block添加到所述异步请求中,并将添加所述block的所述异步请求发送给所述服务端设备200,使所述服务端设备在响应所述异步请求时调用所述block,以将所述异步请求对应的辅助对象中的所述标志位设置为所述目标值。
其中,客户端设备100为每个异步请求设置的辅助对象为包括一标志位和一block的数据结构,所述标志位表征该异步请求是否被服务端设备200响应,所述block用于将所述标志位的值设置为目标值。
本实施例中,block可以带有执行条件,该执行条件可以为包含该block的异步请求被处理完成,即,该异步请求被服务端设备200响应。对应地,服务端设备200接收到添加block的异步请求时,从中识别出block,并对异步请求进行处理,在对异步请求处理完成并对异步请求进行响应时,执行从异步请求识别出的block,从而将客户端设备100中包括该block的辅助对象中的标志位的值设置为目标值。
基于步骤S310-步骤S320,客户端设备100可以通过判断每个异步请求的辅助对象中的标志位的值是否为目标值,来确定该异步请求是否被服务端设备200响应。为了避免多线程数据竞争,客户端设备100依次对各异步请求对应的辅助对象进行访问。
步骤S330,将各异步请求对应的辅助对象添加到一数组中。
本实施例中,可以通过函数式的思想来实现对各异步请求对应的辅助对象的依次访问。详细地,客户端设备可以将需要统一回调的各异步请求所对应的辅助对象添加到一个数组中,如此,每个辅助对象成为了数组中的一个元素,客户端设备100通过轮询数组中每个元素的方式,可以实现对各异步请求对应的辅助对象的依次访问。
步骤S340,依次访问所述数组中的每个辅助对象,判断当前访问的辅助对象中的所述标志位的值是否为目标值。若是,则执行步骤S350;若否,则依次执行步骤S360。
步骤S350,确定当前访问的辅助对象所对应的所述异步请求被所述服务端设备响应,访问所述数组中的下一个辅助对象。
步骤S360,确定当前访问的辅助对象所对应的所述异步请求当前没有被所述服务端设备200响应,等待服务端设备200响应该异步请求,并在确定该异步请求被服务端设备200响应时,访问所述数组中的下一个辅助对象。
本实施例中,步骤S340-步骤S360的实现流程与图3所示的步骤S220-步骤S240类似,在此不再赘述。
通过步骤S340-步骤S360,一方面,可以在检测到数组中的最后一个辅助对象的标志位的值是目标值时,确定所有异步请求均已被服务端设备200响应,整个过程无需对所有异步请求的标志位反复进行多轮检测,减少了客户端设备所需检测的数据量,降低了客户端设备的性能开销。另一方面,客户端设备一次只检测一个异步请求的标志位,避免了多个线程同时检测一个标志位造成的多线程数据竞争问题,进而避免因多线程数据竞争所导致的数据混乱问题。
可选地,本实施例中,步骤S360中,在确定一个异步请求当前没有被服务端设备200响应的情况下,等待服务端设备200响应所述异步请求的方式可以有多种。
一种实施方式中,客户端设备100可以每间隔预设时长检测所述异步请求对应的辅助对象中的标志位的值是否为目标值,若检测到所述异步请求对应的辅助对象中的所述标志位的值为所述目标值,则确定所述异步请求被所述服务端设备200响应,即可以执行步骤S350。
另一种实施方式中,客户端设备100可以通过图5所示步骤来实现步骤S360:
步骤S360-1,检测是否接收到服务端设备200传递给异步请求对应的辅助对象中的block的时间点信息。若是,则执行步骤S360-2;若否,则继续执行步骤S360-1。
步骤S360-2,确定所述异步请求被所述服务端设备200响应,并访问数组中的下一个辅助对象。
本实施例中,对于一个异步请求,添加到该异步请求中的block还可以用于将服务端设备200响应该异步请求的时间点信息回传给该异步请求所对应的辅助对象中的该block。因此,客户端设备100在接收到服务端设备200回传给任一异步请求对应的辅助对象中的block的时间点信息时,可以确定该异步请求已被服务端设备200响应,从而可以访问下一个异步请求对应的辅助对象。
通过图5所示流程,当被访问的辅助对象所对应的异步请求没有被响应时,客户端设备100可以在该异步请求被响应时,立即访问数组中的下一个辅助对象,提高了确定需要统一回调的各异步请求均完成的时间点的及时性。
步骤S370,当确定各所述异步请求均被所述服务端设备200响应时,对各所述异步请求执行所述统一回调。
本实施例中,步骤S370的实现流程与前述的步骤S140、步骤S250类似,在此不再赘述。
为了使得图4和图5所示流程更为清楚,下面通过一个具体例子进行阐述。以上述的直播场景为例,用于观看直播的客户端设备100需要从提供直播服务的服务端设备200获取直播页面P,直播页面P包括多种数据,为了获取该多种数据,客户端设备100需要向服务端设备200发送分别用于获取该多种数据的多个异步请求,例如异步请求R1至RN。
对于异步请求R1至RN的回调过程可以如下:
一、客户端设备100在发送异步请求Ri(1≤i≤N,i为正整数)之前,为异步请求Ri生成对应的辅助对象Ai,辅助对象Ai包括标志位Fi和代码块Bi。
例如图6所示,异步请求R1对应的辅助对象A1包括标志位F1和代码块B1,异步请求R2对应的辅助对象A2包括标志位F2和代码块B2,异步请求R3对应的辅助对象A3包括标志位F3和代码块B3,异步请求RN对应的辅助对象AN包括标志位FN和代码块BN。其中,每个标志位Fi的初始值为0,客户端设备100记录的目标值为1。
二、客户端设备100辅助对象A1至AN被添加到一个数组K中。
三、客户端设备100将每个辅助对象Ai中的代码块Bi添加到辅助对象Ai对应的异步请求Ri中,并将添加代码块Bi的异步请求Ri发送给服务端设备200。
四、服务端设备200接收每个异步请求Ri,从异步请求Ri中识别出代码块Bi,对异步请求Ri进行处理,在处理完成时对异步请求Ri进行响应,并调用识别出的代码块Bi,将客户端设备100中的辅助对象Ai的标志位Fi的值从0更改为1,以及将响应异步请求Ri的时间点信息回传给客户端设备100中的辅助对象Ai的代码块Bi。即,代码块Bi具有一回传值,该回传值为服务端设备200响应异步请求Ri的时间点信息。
五、客户端设备100依次访问数组K中的每个辅助对象Ai,判断该辅助对象Ai中的标志位Fi的值是否为目标值,若是,直接访问数组K中的下一个辅助对象Ai+1,若否,检测是否接收到服务端设备200传递给辅助对象Ai中的代码块Bi的时间点信息,若接收到,访问数组K中的下一个辅助对象Ai+1。
可以理解,步骤四和五可以是并行执行的。步骤五中,参照图6,对于数组K中的第一个辅助对象A1,读取辅助对象A1中的标志位F1的值为0,不是目标值1,则等待服务端设备200响应异步请求R1,即,检测是否接收到服务端设备200回传给代码块B1的时间点信息,并在确定接收到服务端设备200回传给辅助对象A1中的代码块B1的时间点信息时,访问数组K中的下一个辅助对象A2。客户端设备100读取辅助对象A2中的标志位F2的值为1,确定读取的值是目标值,则直接访问数组K中的下一个辅助对象A3。客户端设备100读取辅助对象A3中的标志位F3的值为1,确定读取的值是目标值,则直接访问数组K中的下一个辅助对象A4。
以此类推,客户端设备100在访问至辅助对象AN并确定辅助对象AN中的标志位FN的值为1,或者确定接收到服务端设备200回传给辅助对象AN中的代码块BN的时间点信息时,确定异步请求RN被服务端设备200响应,从而可以确定异步请求R1至RN均已被服务端设备200响应。
六、确定异步请求R1至RN均被服务端设备200响应时,刷新异步请求R1至RN所请求的直播页面P的页面数据。
请参照图7,图7示出了本申请又一实施例的请求回调方法的流程示意图,该方法可以应用于图1所示的客户端设备100。本实施例在图2所示实施例的基础上,详细阐述了客户端设备100检测服务端设备200是否响应异步请求的另一实现过程。下面对该方法的步骤进行阐述。
步骤S410,针对需要统一回调的各异步请求,在向服务端设备200发送每个所述异步请求之前,为所述异步请求设置包括block的辅助对象。
步骤S420,将所述block添加到所述异步请求中,并将添加所述block的所述异步请求发送给服务端设备200,使所述服务端设备在响应所述异步请求时调用所述block,以将响应所述异步请求的时间点信息传递给所述异步请求对应的辅助对象中的所述block。
本实施例中,客户端设备100为每个异步请求设置的辅助对象是仅包括block的数据结构。以前文描述的一个异步请求Ri为例,本实施例中,其对应的辅助对象Ai仅包括代码块Bi。代码块Bi被携带在异步请求Ri中发送给服务端设备200,服务端设备200在响应异步请求时Ri,调用代码块Bi,从而将服务端设备200响应异步请求时Ri的时间点信息回传给客户端设备100中的辅助对象Ai中的代码块Bi。
步骤S430,依次访问每个所述异步请求对应的辅助对象,判断当前访问的辅助对象中的所述block是否获得所述服务端设备传递的时间点信息。若是,则执行步骤S440;若否,则执行步骤S450。
步骤S440,确定当前访问的辅助对象对应的异步请求被服务端设备200响应,则访问下一个所述异步请求对应的辅助对象。
步骤S450,确定当前访问的辅助对象对应的异步请求当前没有被服务端设备200响应,等待所述服务端设备200响应所述异步请求,并在确定所述异步请求被所述服务端设备200响应时,访问下一个所述异步请求对应的辅助对象。
本实施例中,客户端设备100执行步骤S430-步骤S450的流程,与前述实施例中步骤S220-步骤S240类似,区别在于,本实施例中,客户端设备100通过判断辅助对象中的block是否获得服务端设备200回传的时间点信息来判断辅助对象所对应的异步请求是否被服务端设备200响应,其具体实现流程可以参照上述实施例关于图5所示步骤的详细阐述,在此不再赘述。
步骤S460,当确定各所述异步请求均被所述服务端设备响应时,对各所述异步请求执行统一回调。
通过图7所示流程,既可以降低客户端设备100的性能开销,又可以避免多线程数据竞争问题,以及由多线程数据竞争问题所导致的数据混乱问题。
请参照图8,图8为本申请实施例提供的一种客户端设备100的结构框图。该客户端设备100可以是智能手机、平板电脑、电子书等能够运行应用程序的电子设备。本申请中的客户端设备100可以包括一个或多个如下部件:处理器101、存储器102、以及一个或多个应用程序,其中一个或多个应用程序可以被存储在存储器102中并被配置为由一个或多个处理器101执行,一个或多个程序配置用于执行如前述方法实施例所描述的方法。
处理器101可以包括一个或者多个处理核。处理器101利用各种接口和线路连接整个客户端设备100内的各个部分,通过运行或执行存储在存储器102内的指令、程序、代码集或指令集,以及调用存储在存储器102内的数据,执行客户端设备100的各种功能和处理数据。可选地,处理器101可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(ProgrammableLogic Array,PLA)中的至少一种硬件形式来实现。处理器101可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器101中,单独通过一块通信芯片进行实现。
存储器102可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器102可用于存储指令、程序、代码、代码集或指令集。存储器102可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等。存储数据区还可以存储客户端设备100在使用中所创建的数据(比如本申请实施例中的数组、辅助对象等)等。
可以理解,图8所示结构仅为示意,本申请实施例提供的客户端设备100还可以包括比图8所示更多、更少或完全不同的配置,本申请实施例不以此为限制。
请参照图9,其中示出了本申请实施例提供的一种请求回调装置900的结构框图,该装置900可以应用于图8所示客户端设备100。该装置900可以包括检测模块910以及回调模块920。
其中,检测模块910用于:针对发送给所述服务端设备的需要统一回调的各异步请求,依次检测每个所述异步请求是否被所述服务端设备响应;若确定当前检测的所述异步请求被所述服务端设备响应,则检测下一个所述异步请求是否被所述服务端设备响应;若确定当前检测的所述异步当前没有被所述服务端设备响应,则等待所述服务端设备响应所述异步请求,并在确定当前检测的所述异步请求被所述服务端设备响应时,检测下一个所述异步请求是否被所述服务端设备响应。
可选地,本实施例中,所述装置900还可以包括设置模块。
一种实施方式中,设置模块可以用于:在向所述服务端设备发送每个所述异步请求之前,为所述异步请求设置包括标志位的辅助对象,所述标志位用于在所述服务端设备响应所述异步请求时,被所述服务端设备设置为目标值。在此情况下,检测模块910可以通过如下方式来依次检测每个所述异步请求是否被所述服务端设备响应:
依次访问每个所述异步请求对应的辅助对象,判断当前访问的辅助对象中的所述标志位的值是否为所述目标值;若该辅助对象中的所述标志位的值为所述目标值,则确定该辅助对象所对应的所述异步请求被所述服务端设备响应;若该辅助对象中的所述标志位的值不是所述目标值,则确定该辅助对象所对应的所述异步请求当前没有被所述服务端设备响应。
可选地,所述设置模块设置的辅助对象还可以包括block,所述block用于将所述辅助对象中的标志位设置为所述目标值。在此情况下,装置900还可以包括发送模块。
所述发送模块用于:在向所述服务端设备发送每个所述异步请求之前,获取所述异步请求对应的辅助对象中的所述block;将获取的所述block加到所述异步请求中,并将添加所述block的所述异步请求发送给所述服务端设备,使所述服务端设备在响应所述异步请求时调用所述block,以将所述异步请求对应的辅助对象中的所述标志位设置为所述目标值。
可选地,所述异步请求中的block还可以用于将所述服务端设备响应所述异步请求的时间点信息传递给所述异步请求对应的辅助对象中的所述block。在此情况下,所述检测模块910等待所述服务端设备响应所述异步请求的方式可以为:检测是否接收到所述服务端设备传递给所述异步请求对应的辅助对象中的所述block的时间点信息;若接收到,则确定所述异步请求被所述服务端设备响应。
其他情况下,所述检测模块920还可以通过如下方式等待所述服务端设备响应所述异步请求:
每间隔预设时长检测所述异步请求对应的辅助对象中的所述标志位的值是否为所述目标值;若检测到所述异步请求对应的辅助对象中的所述标志位的值为所述目标值,则确定所述异步请求被所述服务端设备响应。
另一种实施方式中,设置模块还可以用于:在向所述服务端设备发送每个所述异步请求之前,为所述异步请求设置包括block的辅助对象。在此情况下,所述装置900通过上述的发送模块向服务端设备200发送异步请求。检测模块910依次检测每个所述异步请求是否被所述服务端设备响应的方式可以为:
依次访问每个所述异步请求对应的辅助对象,判断当前访问的辅助对象中的所述block是否获得所述服务端设备传递的时间点信息;若该辅助对象中的所述block获得所述服务端设备传递的时间点信息,则确定该辅助对象所对应的所述异步请求被所述服务端设备响应;若该辅助对象中的所述block没有获得所述服务端设备传递的时间点信息,则确定该辅助对象所对应的所述异步请求当前没有被所述服务端设备响应。
回调模块920用于当确定各所述异步请求均被所述服务端设备响应时,对各所述异步请求执行所述统一回调。
可选地,本申请实施例中,所述设置模块可以将需要统一回调的各异步请求对应的辅助对象添加到一数组中。对应地,检测模块910具体可以用于依次访问所述数组中的每个辅助对象。
可选地,本申请实施例中的各所述异步请求可以用于请求同一页面的页面数据。在此情况下,所述设置模块具体可以用于:识别每个所述异步请求的页面标识;将具有相同页面标识的各所述异步请求添加到所述数组中。所述回调模块920具体可以用于对各所述异步请求所请求的页面数据进行刷新。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,所显示或讨论的模块相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
请参考图10,其示出了本申请实施例提供的一种计算机可读存储介质1000的结构框图。该计算机可读存储介质1000中存储有程序代码,所述程序代码可被处理器调用执行上述方法实施例中所描述的方法。
计算机可读存储介质1000可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读存储介质1000包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读存储介质800具有执行上述方法中的任何方法步骤的程序代码1010的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码1010可以例如以适当形式进行压缩。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (11)
1.一种请求回调方法,其特征在于,应用于与服务端设备通信连接的客户端设备,所述方法包括:
针对发送给所述服务端设备的需要统一回调的各异步请求,依次检测每个所述异步请求是否被所述服务端设备响应;若确定当前检测的所述异步请求被所述服务端设备响应,则检测下一个所述异步请求是否被所述服务端设备响应;其中,所述依次检测每个所述异步请求是否被所述服务端设备响应包括:检测每个所述异步请求对应的辅助对象中的标志位的值是否为目标值,和/或,检测每个所述异步请求对应的辅助对象中的代码块是否获得所述服务端设备传递的时间点信息;
若确定当前检测的所述异步请求当前没有被所述服务端设备响应,则等待所述服务端设备响应当前检测的所述异步请求,并在确定当前检测的所述异步请求被所述服务端设备响应时,检测下一个所述异步请求是否被所述服务端设备响应;
当确定各所述异步请求均被所述服务端设备响应时,对各所述异步请求执行所述统一回调。
2.根据权利要求1所述的方法,其特征在于,还包括:
在向所述服务端设备发送每个所述异步请求之前,为所述异步请求设置包括标志位的辅助对象,所述标志位用于在所述服务端设备响应所述异步请求时,被所述服务端设备设置为目标值;
所述检测每个所述异步请求对应的辅助对象中的标志位的值是否为目标值之后,还包括:
若该辅助对象中的所述标志位的值为所述目标值,则确定该辅助对象所对应的所述异步请求被所述服务端设备响应;
若该辅助对象中的所述标志位的值不是所述目标值,则确定该辅助对象所对应的所述异步请求当前没有被所述服务端设备响应。
3.根据权利要求2所述的方法,其特征在于,所述辅助对象还包括代码块,所述代码块用于将所述辅助对象中的标志位设置为所述目标值,所述方法还包括:
在向所述服务端设备发送每个所述异步请求之前,获取所述异步请求对应的辅助对象中的所述代码块;
将获取的所述代码块添加到所述异步请求中,并将添加所述代码块的所述异步请求发送给所述服务端设备,使所述服务端设备在响应所述异步请求时调用所述代码块,以将所述异步请求对应的辅助对象中的所述标志位设置为所述目标值。
4.根据权利要求3所述的方法,其特征在于,所述异步请求中的代码块,还用于将所述服务端设备响应所述异步请求的时间点信息传递给所述异步请求对应的辅助对象中的所述代码块;
所述等待所述服务端设备响应所述异步请求,包括:
检测是否接收到所述服务端设备传递给所述异步请求对应的辅助对象中的所述代码块的时间点信息;
若接收到,则确定所述异步请求被所述服务端设备响应。
5.根据权利要求2或3所述的方法,其特征在于,所述等待所述服务端设备响应所述异步请求,包括:
每间隔预设时长检测所述异步请求对应的辅助对象中的所述标志位的值是否为所述目标值;
若检测到所述异步请求对应的辅助对象中的所述标志位的值为所述目标值,则确定所述异步请求被所述服务端设备响应。
6.根据权利要求1所述的方法,其特征在于,还包括:
在向所述服务端设备发送每个所述异步请求之前,为所述异步请求设置包括代码块的辅助对象;
将所述代码块添加到所述异步请求中,并将添加所述代码块的所述异步请求发送给所述服务端设备,使所述服务端设备在响应所述异步请求时调用所述代码块,以将响应所述异步请求的时间点信息传递给所述异步请求对应的辅助对象中的所述代码块;
所述检测每个所述异步请求对应的辅助对象中的代码块是否获得所述服务端设备传递的时间点信息之后,还包括:
若该辅助对象中的所述代码块获得所述服务端设备传递的时间点信息,则确定该辅助对象所对应的所述异步请求被所述服务端设备响应;
若该辅助对象中的所述代码块当前没有获得所述服务端设备传递的时间点信息,则确定该辅助对象所对应的所述异步请求没有被所述服务端设备响应。
7.根据权利要求2-4、6中任意一项所述的方法,其特征在于,在所述依次访问每个所述异步请求对应的辅助对象之前,还包括:
将各所述异步请求对应的辅助对象添加到一数组中;
所述依次访问每个所述异步请求对应的辅助对象,包括:
依次访问所述数组中的每个辅助对象。
8.根据权利要求7所述的方法,其特征在于,各所述异步请求用于请求同一页面的页面数据;
所述将各所述异步请求对应的辅助对象添加到一数组中,包括:
识别每个所述异步请求的页面标识;将具有相同页面标识的各所述异步请求添加到所述数组中;
所述对各所述异步请求执行所述统一回调,包括:
对各所述异步请求所请求的页面数据进行刷新。
9.一种请求回调装置,其特征在于,应用于与服务端设备通信连接的客户端设备,包括:
检测模块,用于针对发送给所述服务端设备的需要统一回调的各异步请求,依次检测每个所述异步请求是否被所述服务端设备响应;若确定当前检测的所述异步请求被所述服务端设备响应,则检测下一个所述异步请求是否被所述服务端设备响应;若确定当前检测的所述异步请求当前没有被所述服务端设备响应,则等待所述服务端设备响应所述异步请求,并在确定当前检测的所述异步请求被所述服务端设备响应时,检测下一个所述异步请求是否被所述服务端设备响应;
回调模块,用于当确定各所述异步请求均被所述服务端设备响应时,对各所述异步请求执行所述统一回调;
其中,所述检测模块,具体用于:检测每个所述异步请求对应的辅助对象中的标志位的值是否为目标值,和/或,检测每个所述异步请求对应的辅助对象中的代码块是否获得所述服务端设备传递的时间点信息。
10.一种客户端设备,其特征在于,包括:
一个或多个处理器;
存储器;
一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由一个或多个处理器执行,所述一个或多个程序配置用于执行如权利要求1-8中任意一项所述的方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有程序代码,所述程序代码可被处理器调用执行如权利要求1-8中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911184317.4A CN110995817B (zh) | 2019-11-27 | 2019-11-27 | 请求回调方法、装置及客户端设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911184317.4A CN110995817B (zh) | 2019-11-27 | 2019-11-27 | 请求回调方法、装置及客户端设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110995817A CN110995817A (zh) | 2020-04-10 |
CN110995817B true CN110995817B (zh) | 2022-05-20 |
Family
ID=70087572
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911184317.4A Active CN110995817B (zh) | 2019-11-27 | 2019-11-27 | 请求回调方法、装置及客户端设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110995817B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113452721A (zh) * | 2021-08-30 | 2021-09-28 | 湖南高至科技有限公司 | 一种网络交互函数优化系统、方法、计算机设备和介质 |
CN114885025B (zh) * | 2022-06-14 | 2023-10-03 | 中国电信股份有限公司 | 异步请求处理方法、装置、设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1830192A (zh) * | 2003-07-31 | 2006-09-06 | 国际商业机器公司 | 用于异步地处理请求的方法、系统和程序产品 |
CN102387206A (zh) * | 2011-10-20 | 2012-03-21 | 镇江睿泰信息科技有限公司 | 一种Web服务并发请求合成方法及系统 |
CN102404367A (zh) * | 2010-09-13 | 2012-04-04 | 深圳市财付通科技有限公司 | 一种异步通信方法及系统 |
CN107122448A (zh) * | 2017-04-25 | 2017-09-01 | 广州市诚毅科技软件开发有限公司 | 一种前端页面请求的预计响应时间的智能显示方法及装置 |
CN109254854A (zh) * | 2018-08-15 | 2019-01-22 | 中国平安人寿保险股份有限公司 | 异步调用方法、计算机装置及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103620576B (zh) * | 2010-11-01 | 2016-11-09 | 七网络公司 | 适用于移动应用程序行为和网络条件的缓存 |
US10621530B2 (en) * | 2016-05-09 | 2020-04-14 | Sap Se | Self-organizing parallel deployment of database artifacts |
US11019203B2 (en) * | 2018-03-09 | 2021-05-25 | Pindrop Security, Inc. | Silent caller ID verification using callback request |
-
2019
- 2019-11-27 CN CN201911184317.4A patent/CN110995817B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1830192A (zh) * | 2003-07-31 | 2006-09-06 | 国际商业机器公司 | 用于异步地处理请求的方法、系统和程序产品 |
CN102404367A (zh) * | 2010-09-13 | 2012-04-04 | 深圳市财付通科技有限公司 | 一种异步通信方法及系统 |
CN102387206A (zh) * | 2011-10-20 | 2012-03-21 | 镇江睿泰信息科技有限公司 | 一种Web服务并发请求合成方法及系统 |
CN107122448A (zh) * | 2017-04-25 | 2017-09-01 | 广州市诚毅科技软件开发有限公司 | 一种前端页面请求的预计响应时间的智能显示方法及装置 |
CN109254854A (zh) * | 2018-08-15 | 2019-01-22 | 中国平安人寿保险股份有限公司 | 异步调用方法、计算机装置及存储介质 |
Non-Patent Citations (2)
Title |
---|
A Component Architecture for;Christopher Brooks;《Proceedings of the IEEE》;20180420;全文 * |
基于CORBA事件服务的异步通信;巩方浩;《电子设计工程》;20100630;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110995817A (zh) | 2020-04-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110096336B (zh) | 数据监控方法、装置、设备和介质 | |
CN111580995A (zh) | 基于mqtt异步通信场景下的分布式云平台与物联网智能终端的同步通信方法与系统 | |
CN110995817B (zh) | 请求回调方法、装置及客户端设备 | |
CN104756080A (zh) | 扩展主机设备的功能 | |
CN113656176B (zh) | 云设备的分配方法、装置、系统、电子设备、介质及产品 | |
CN115964319A (zh) | 远程直接内存访问的数据处理方法及相关产品 | |
CN113419824A (zh) | 数据处理方法、装置、系统及计算机存储介质 | |
CN105988941B (zh) | 缓存数据处理方法和装置 | |
CN114553762B (zh) | 一种对流表中的流表项处理的方法及装置 | |
CN105373563B (zh) | 数据库切换方法及装置 | |
CN107294911B (zh) | 一种数据包监听方法及装置、远程过程调用系统、设备 | |
CN112653736B (zh) | 一种并行回源方法、装置及电子设备 | |
CN107332703B (zh) | 一种多应用日志的查看方法及装置 | |
CN106550021B (zh) | 推送消息的推送方法及装置 | |
CN108429703B (zh) | Dhcp客户端上线方法及装置 | |
CN107634978B (zh) | 一种资源调度方法及装置 | |
CN110912958A (zh) | Http连接的处理方法、装置、设备和介质 | |
CN113901374A (zh) | 网页刷新方法、装置、电子设备及存储介质 | |
KR20130046440A (ko) | 인터럽트-기반 코맨드 프로세싱 | |
CN111913815A (zh) | 调用请求的处理方法、装置、电子设备及可读存储介质 | |
CN113377548A (zh) | 一种标识生成方法、装置、计算机设备、存储介质 | |
CN113296977B (zh) | 一种消息处理方法及装置 | |
CN110266665B (zh) | 网络块设备的连接方法、装置、设备及可读存储介质 | |
CN116599917B (zh) | 网口确定方法、装置、设备及存储介质 | |
CN116467235B (zh) | 一种基于dma的数据处理方法、装置、电子设备及介质 |
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 | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20200410 Assignee: GUANGZHOU CUBESILI INFORMATION TECHNOLOGY Co.,Ltd. Assignor: GUANGZHOU HUADUO NETWORK TECHNOLOGY Co.,Ltd. Contract record no.: X2021440000031 Denomination of invention: Request callback method, device and client device License type: Common License Record date: 20210125 |
|
EE01 | Entry into force of recordation of patent licensing contract | ||
GR01 | Patent grant | ||
GR01 | Patent grant |