一种异步调用方法、装置、计算机设备和可读存储介质与流程

文档序号:31868656发布日期:2022-10-21 17:11阅读:44来源:国知局
一种异步调用方法、装置、计算机设备和可读存储介质与流程

1.本技术涉及通讯技术领域,具体涉及一种异步调用方法、装置、计算机设备和可读存储介质。


背景技术:

2.操作系统发展到今天已经十分精巧,线程便是其中一个杰作。在单线程方式下,计算机设备是一台严格意义上的冯诺依曼式机器,即任务在执行的过程中只能上一个任务执行结束后才能执行下一个任务。
3.有了多线程的支持,可以采用异步调用的方式对任务进行处理。即,可以采用异步调用的方式,从而使得下一个任务不需要等待上一个任务执行结束也可以往下执行。但是,现有的异步调用方法使用起来有诸多限制,例如,在当前的任务必须等待线程返回上一个任务执行结果才可以执行的场景下,现有的异步调用方法并不能适用于该场景,而这将会降低任务的执行效率。


技术实现要素:

4.本技术实施例提出了一种异步调用方法、装置和电子设备,提高了应用程序中任务的执行效率。
5.本技术实施例提供了一种异步调用方法,包括:
6.确定应用程序的待执行任务集,所述待执行任务集包括至少一个按照执行顺序排列的待执行任务;
7.利用所述应用程序的任务循环线程执行所述待执行任务集中待执行任务;
8.当检测到所述任务循环线程执行的当前任务满足预设触发条件时,调用所述任务循环线程的异步调用等待函数,以创建用于执行至少一个目标任务的子循环线程,所述目标任务包括所述待执行任务集中执行顺序在所述当前任务之后的任务;
9.利用所述子循环线程执行至少一个目标任务;
10.当检测到所述异步调用等待函数接收到所述当前任务的执行结果时,基于所述执行结果触发所述任务循环线程执行所述待执行任务集中未执行任务。
11.相应的,本技术实施例还提供了一种异步调用装置,包括:
12.确定单元,用于确定应用程序的待执行任务集,所述待执行任务集包括至少一个按照执行顺序排列的待执行任务;
13.第一执行单元,用于利用所述应用程序的任务循环线程执行所述待执行任务集中待执行任务;
14.调用单元,用于当检测到所述任务循环线程执行的当前任务满足预设触发条件时,调用所述任务循环线程的异步调用等待函数,以创建用于执行至少一个目标任务的子循环线程,所述目标任务包括所述待执行任务集中执行顺序在所述当前任务之后的任务;
15.第二执行单元,用于利用所述子循环线程执行至少一个目标任务;
16.触发单元,用于当检测到所述异步调用等待函数接收到所述当前任务的执行结果时,基于所述执行结果触发所述任务循环线程执行所述待执行任务集中未执行任务。
17.在一实施例中,所述调用单元包括:
18.确定子单元,用于当检测到所述任务循环线程执行的当前任务满足预设触发条件时,确定所述当前任务的任务类型;
19.添加子单元,用于根据所述当前任务的任务类型,在所述待执行任务集中添加位置定位标识;
20.调用子单元,用于根据所述位置定位标识调用任务循环线程的异步调用等待函数,并根据所述位置定位标识从所述待执行任务集中筛选出所述至少一个目标任务,以利用所述异步调用等待函数创建用于执行至少一个目标任务的子循环线程。
21.在一实施例中,所述添加子单元包括:
22.获取模块,用于根据所述当前任务的任务类型,在预设关系映射表中获取目标任务筛选信息;
23.添加模块,用于根据所述目标任务筛选信息在所述待执行任务集中添加位置定位标识。
24.在一实施例中,所述调用子单元包括:
25.触发模块,用于利用所述异步调用等待函数触发任务执行引擎调用线程创建函数创建所述子循环线程。
26.在一实施例中,所述触发单元包括:
27.检测子单元,用于当检测到所述异步调用等待函数接收到所述当前任务的执行结果时,对所述子循环线程中的目标任务进行执行状态检测,得到所述目标任务的执行状态;
28.触发子单元,用于根据所述执行状态触发所述任务循环线程执行所述待执行任务集中未执行任务。
29.在一实施例中,所述触发子单元包括:
30.确定模块,用于当检测到所述子循环线程中包括未执行任务时,确定所述未执行任务在所述待执行任务集中的执行顺序;
31.触发模块,用于根据所述执行顺序触发所述任务循环线程根据所述执行顺序执行所述未执行任务。
32.本技术实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述一方面的各种可选方式中提供的方法。
33.相应的,本技术实施例还提供一种存储介质,所述存储介质存储有指令,所述指令被处理器执行时实现本技术实施例任一提供的异步调用方法。
34.本技术实施例可以确定应用程序的待执行任务集,待执行任务集包括至少一个按照执行顺序排列的待执行任务;利用应用程序的任务循环线程执行待执行任务集中待执行任务;当检测到任务循环线程执行的当前任务满足预设触发条件时,调用任务循环线程的异步调用等待函数,以创建用于执行至少一个目标任务的子循环线程;利用子循环线程执行至少一个目标任务;当检测到异步调用等待函数接收到当前任务的执行结果时,基于执
行结果触发任务循环线程执行待执行任务集中未执行任务,提高了任务的执行效率。
附图说明
35.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
36.图1是本技术实施例提供的异步调用方法的场景示意图;
37.图2是本技术实施例提供的异步调用方法的流程示意图;
38.图3是本技术实施例提供的异步调用方法的待执行任务示意图;
39.图4是本技术实施例提供的异步调用方法的又一场景示意图;
40.图5是本技术实施例提供的异步调用方法的任务示意图;
41.图6是本技术实施例提供的异步调用方法的又一场景示意图;
42.图7是本技术实施例提供的异步调用方法的又一场景示意图;
43.图8是本技术实施例提供的异步调用方法的又一场景示意图;
44.图9是本技术实施例提供的异步调用方法的又一场景示意图;
45.图10是本技术实施例提供的异步调用方法的又一场景示意图;
46.图11是本技术实施例提供的异步调用方法的又一流程示意图;
47.图12是本技术实施例提供的异步调用方法的又一待执行任务示意图;
48.图13是本技术实施例提供的异步调用方法的又一待执行任务示意图;
49.图14是本技术实施例提供的异步调用方法的又一待执行任务示意图;
50.图15是本技术实施例提供的检验装置的结构示意图;
51.图16是本技术实施例提供的检验装置的另一结构示意图;
52.图17是本技术实施例提供的终端的结构示意图。
具体实施方式
53.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
54.本技术实施例提出了一种异步调用方法,该异步调用方法可以由异步调用装置执行,该异步调用装置可以集成在计算机设备中。其中,该计算机设备可以包括终端以及服务器等中的至少一个。即,该异步调用装置可以集成在终端中,还可以集成在服务器中,还可以集成在能够进行互相通信的终端和服务器中。其中,终端可以为智能手机、平板电脑、笔记本电脑、个人电脑(personal computer,pc)、智能家居、可穿戴电子设备、vr/ar设备、车载计算机等等。服务器可以为多个异构系统之间的互通服务器或者后台服务器,还可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、以及大数据和人工智能平台等基础云计算服务的云服务器等等。
55.在一实施例中,如图1所述,异步调用装置可以集成在终端或服务器等计算机设备上,以实施本技术实施例提出的异步调用方法。具体地,计算机设备可以确定应用程序的待执行任务集,待执行任务集包括至少一个按照预定顺序排列的待执行任务;利用应用程序的任务循环线程执行该待执行任务集中待执行任务;当检测到任务循环线程执行的当前任务满足预设触发条件时,调用任务循环线程的调用异步等待,以创建用于执行至少一个目标任务的子循环线程,其中,该目标任务未任务集中执行顺序在当前任务之后的任务;利用子循环线程执行至少一个目标任务;当检测到异步调用等待函数接收到当前任务的执行结果时,基于该执行结果触发任务循环线程执行该待执行任务集中未执行任务。
56.其中,在本技术实施例中,异步包括当任务循环线程执行的当前任务出现堵塞时,可以把当前任务挂起,去执行其他未执行任务的情况。其中,当前任务出现堵塞的情况有多种,例如,当前任务执行的时间较长或当前任务在执行的过程当中出现异常等等都可能导致当前任务堵塞。
57.以下分别进行详细说明,需要说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。
58.本技术实施例将从异步调用装置的角度进行描述,该异步调用装置可以集成在计算机设备中,该计算机设备可以是服务器,也可以是终端等设备。
59.如图2所述,提供了一种异步调用方法,具体流程包括:
60.101、确定应用程序的待执行任务集,待执行任务集包括至少一个按照预定顺序排列的待执行任务。
61.其中,应用程序包括完成某项或多项特定功能的计算机程序,它运行在交互模式,可以和应用程序的使用对象进行交互,具有可视的显示界面。
62.例如,应用程序可以包括各种终端上的应用软件。例如,应用程序可以包括各种手机软件(application,app)、平板电脑应用软件、笔记本电脑上的应用软件、个人计算机(pc,personal computer)上的应用软件,等等。
63.例如,应用程序可以包括浏览器、视频播放软件、游戏软件等等。
64.又例如,应用程序还可以包括小程序。其中,小程序(mini program)是一种不需要下载安装即可使用的应用程序。为了向用户提供更多样化的业务服务,开发者可为终端的应用(例如即时通信应用、购物应用、邮件应用等)开发相应的小程序,该小程序可作为子应用被嵌入至终端的应用中,通过运行应用内的子应用(即对应的小程序)能够为用户提供相应的业务服务。
65.在一实施例中,计算机程序包括一组指示计算机设备或其他具有信息处理能力装置执行动作或做出判断的指令,通常用某种编程语言编写,运行于某种计算机设备上。
66.其中,不同的应用程序对应的计算机程序可以用不同的编程语言进行编写。例如,小程序可以使用javascript编程语言进行编写。手机软件可以用java编程语言或c++编程语言进行编写,等等。
67.在一实施例中,由于应用程序一般具有丰富的功能,所以一个应用程序中可以包括成千上百项计算机程序,每一项计算机程序都可以看作应用程序中的一个任务。
68.例如,该应用程序是一个能够播放视频的小程序。该小程序中包括多项计算机程序,其中一项计算机程序的功能是播放视频,另一项计算机程序的功能是停止播放视频,则
播放视频的那项计算机程序可以看作一个任务,停止播放视频的那项计算机程序可以看作另一个任务。
69.例如,如图3所示,是计算机程序的一个示例。在该例子中,dofoo1、dofoo2和dofoo3都可以看成一项计算机程序,因此都可以看作一个任务。其中,param1是dofoo1的输入参数,result1是dofoo1的执行结果。同理,result1是dofoo2的输入参数,result2是dofoo2的执行结果,result2是dofoo3的输入参数,result3是dofoo3的执行结果。
70.其中,待执行任务包括应用程序中的未执行任务。待执行任务集包括至少一个按照执行顺序排列的待执行任务。执行顺序可以包括该待执行任务在任务集中被执行的顺序。未执行任务包括应用程序中还没有执行的任务。
71.在一实施例中,应用程序在同一时间段内可能会迸发出多个未执行任务,但是应用程序的任务循环线程并不能立即将应用程序中的多个未执行任务执行完毕。为了有序且有针对性地执行应用程序中的多个未执行任务,可以在多个未执行任务中确定若干个待执行任务,并将该待执行任务添加至待执行任务集中,使得任务循环线程可以首先将待执行任务集中的待执行任务执行完。
72.当任务循环线程将待执行任务集中的待执行任务都执行完毕时,可以再从应用程序的多个未执行任务确定若干个待执行任务,并将该待执行任务添加至待执行任务集中,以使得任务循环线程可以执行。通过这样反复循环,从而使得任务循环线程可以有序地执行应用程序中的未执行任务。
73.例如,应用程序在当前的时间段包括20个未执行任务,则可以从这20个未执行任务中确定10个待执行任务,并将这10个待执行任务添加至待执行任务集中,从而使得该10个待执行任务可以由任务循环线程进行执行。
74.在一实施例中,当在多个未执行任务中确定若干个待执行任务时,可以根据未执行任务的任务类型生成时间和时效性等中的至少一种从多个未执行任务确定待执行任务。
75.例如,当多个未执行任务时,可以将时效性较为重要的任务确定为待执行任务。又例如,可以将生成时间较长的任务确定为待执行任务,等等。
76.在一实施例中,执行顺序可以由待执行任务进入待执行任务集中的时间确定。例如,任务1比任务2先进入待执行任务集中,则任务1的顺序可以在任务2前面。
77.在一实施例中,执行顺序可以在执行由该待执行任务在应用程序中的编写顺序决定。例如,当应用程序是使用javascript进行编写时,任务1编写在任务2的前面,则任务1在待执行任务集中的执行顺序可以在任务2前面。
78.在一实施例中,可以根据任务的性质将应用程序中的多个任务进行分类。例如,可以将应用程序中的任务划分为调度器任务、微任务、异步线程任务和其他任务。
79.其中,调度器任务包括具有定时性质的任务。
80.例如,在利用javascript编程语言进行编写的应用程序中,调度器任务可以包括settimeout()、setinterval()、requestanimationframe()等等。其中,settimeout()用于在指定的毫秒数后调用函数或计算表达式。setinterval()用于按照指定的周期(以毫秒计)来调用函数或计算表达式。requestanimationframe()可以浏览器或小程序提供一个用于定时循环操作的接口,从而使得浏览器或小程序内的各种网页动画效果能够有一个统一的刷新机制,从而节省系统资源,提高系统性能,改善视觉效果。
81.其中,微任务包括需要任务循环线程中的内部队列执行的任务。
82.例如,在javascript编程语言进行编写的应用程序中,微任务可以包括promise(),等等。其中,promise()代表了未来将要发生的事件,用来传递异步操作的消息。
83.其中,异步线程任务包括需要子循环线程执行的任务。
84.例如,在javascript编程语言进行编写的应用程序中,异步线程任务可以包括request()、websocket()等等。其中,request()可以请求获取数据。websocket()提供了一种在单个传输控制协议(transmission control protocol,tcp)连接上进行全双工通讯的协议,使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户推送数据。
85.其中,其他任务包括除了调度器任务、微任务和异步线程任务以外的任务。
86.在一实施例中,上述任务在应用程序中的执行顺序可以如图4所示,即先执行调度器任务,然后执行微任务,然后执行异步线程任务,最后执行其他任务。
87.在一实施例中,由于应用程序包括计算机程序,而计算机程序通常是由某种编程语言编写的,所以由不同编程语言编写的应用程序在执行待执行任务时会有不同的执行流程。
88.例如,当应用程序中的计算机程序是由java编程语言进行编写时,由于java是多线程编程语言,所以执行应用程序中的待执行任务由多条任务循环线程。
89.又例如,当应用程序中的计算机程序是由javascript编程语言进行编写时,由于javascript是单线程编程语言,所以执行应用程序中的待执行任务只有一条任务循环线程。
90.则可以根据任务循环线程数量确定待执行任务集。
91.譬如,当应用程序中有多条任务循环线程时,可以分别为多条任务循环线程确定应用程序的待执行任务集。
92.例如,当应用程序中有100个未处理任务,且有3条任务循环线程时,可以根据未处理任务的生成时间和/或时效性分别为3条任务循环线程确定对应的待执行任务集,而每个待执行任务集中都包括若干个待执行任务。
93.又例如,当应用程序中有100个未处理任务,且只有1条任务循环线程时,则可以为该任务循环线程确定待执行任务集。
94.102、利用应用程序的任务循环线程执行待执行任务集中待执行任务。
95.其中,任务循环线程包括计算机设备中操作系统能够进行运算调度的最小单元,即任务循环线程包括计算机设备中能够执行应用程序中的任务的单位。譬如,将计算机设备比喻为一座工厂,任务循环线程便像工厂内的流水线,不断循环地执行着应用程序中产生的各种任务。
96.在一实施例中,由于应用程序包括计算机程序,而计算机程序通常是由某种编程语言编写的,所以由不同编程语言编写的应用程序在执行待执行任务时会有不同的执行流程。
97.例如,当应用程序中的计算机程序是由java编程语言进行编写时,由于java是多线程编程语言,所以执行应用程序中的待执行任务由多条任务循环线程。此时,就相当于计算机设备这座工厂中有多条流水线,应用程序中的任务可以有这多条流水线共同执行,从
而使得计算机设备这座工厂可以同时执行多个任务。
98.又例如,当应用程序中的计算机程序是由javascript编程语言进行编写时,由于javascript是单线程编程语言,所以执行应用程序中的待执行任务只有一条任务循环线程。此时,就相当于应用程序这座工厂中只有一条流水线,所有的任务都是由这条流水线执行的。且,这条流水线每次只能完成一个任务,不能同时完成多个任务。
99.在一实施例中,当只有一条任务循环线程执行应用程序中的待执行任务时,便可以利用该任务循环线程执行待执行任务集中的待执行任务。
100.在一实施例中,当有多条任务循环线程执行应用程序中的待执行任务时,由于上一个步骤会为根据任务循环线程的数量确定待执行任务集。例如,当有3个任务循环线程时,便会为每个任务循环线程确定其对应的待执行任务集。则,任务循环线程可以并行地执行其对应的待执行任务集中的待执行任务。
101.在一实施例中,由于待执行任务集中的待执行任务是按照执行顺序进行排列的,所以当利用应用程序的任务循环线程执行待执行任务集中的待执行任务时,任务循环线程会根据待执行任务集中的执行顺序执行待执行任务。
102.例如,待执行任务集中3个待执行任务,其中,待执行任务1在待执行任务集中的第一位,待执行任务2在待执行任务集中的第二位,待执行任务3在待执行任务集中的第三位。则在利用任务循环线程执行待执行任务时,会先执行待执行任务1,然后执行待执行任务2,最后执行待执行任务3。
103.在一实施例中,当应用程序中的任务集中的待执行任务包括调度器任务、微任务、异步线程任务和其他任务时,可以利用任务循环线程按照执行顺序执行任务集中顺序。
104.在一实施例中,在利用应用程序的任务循环线程执行待执行任务集中待执行任务的过程中,可以对任务集中的任务不断进行检测,从而使得当检测到任务集中的当前执行的任务满足预设触发条件时,对该当前执行的任务进行处理。
105.其中,由于javascript是单线程,这就意味着所有任务都需要排队,只有前一个任务结束,才会执行后一个任务。如果前一个任务耗时很长,后一个任务就不得不等着,这会造成任务的执行效率底下。
106.103、当检测到任务循环线程执行的当前任务满足预设触发条件时,调用任务循环线程的异步调用等待函数,以创建用于执行至少一个目标任务的子循环线程,目标任务包括待执行任务集中执行顺序在当前任务之后的任务。
107.其中,当前任务包括任务循环线程当前执行的任务。
108.其中,目标任务包括待执行任务集中执行顺序在当前任务之后的任务。
109.在一实施例中,由于任务循环线程是根据待执行任务集中的执行顺序执行待执行任务的,所以目标任务可以包括待执行任务集中未执行任务。
110.例如,当应用程序是利用javascript编写时,由于javascript是单线程的,所以应用程序中的任务只能按照预定顺序执行下来。此时,由于目标任务包括任务集中执行顺序在当前任务之后的任务,所以目标任务可以包括任务集中未执行任务。
111.其中,子循环线程包括当任务循环线程执行的当前任务满足预设触发条件时,执行任务集中执行顺序在当前任务之后的任务的线程。
112.在一实施例中,子循环线程和任务循环线程都有一样的功能,都可以待执行任务
集中的待执行任务进行处理。
113.其中,异步调用等待函数包括可以创建子循环线程,并将任务集中执行顺序在当前任务之后的任务添加至子循环线程中执行的函数。
114.在一实施例中,为了解决现有的异步调用方法使用起来有诸多限制,例如,在当前的任务必须等待线程返回上一个任务执行结果才可以执行的场景下,现有的异步调用方法并不能适用于该场景,且会降低程序的运行效率的问题,本技术提出了一种新的异步调用机制。其中,该异步调用机制可以用signal表示。
115.其中,该异步调用等待函数可以是实现该异步调用机制的其中一个功能函数。在一实施例中,该异步调用等待函数可以用多种形式表示。例如,该异步调用等待函数可以用signal.wait()表示。又例如,该异步调用等待函数可以用signal.call()表示等等。本技术实施例对此并无限制。
116.本技术实施例提出的异步调用机制可以在应用程序中任意任务的任意位置中,从而使得本技术实施例提出的异步调用机制适用于各种应用场景,解决了应用程序中同步任务需要等待异步调用的问题,提高了任务的运行效率。
117.其中,预设触发条件包括预先设置好的,会触发异步调用等待函数的条件。例如,预设触发条件可以包括任务执行时间超过预设阈值或当前任务等待上一任务的时间超过预设阈值,等等。
118.例如,当检测到任务循环线程中当前任务的执行时间超过1毫秒时,便可以触发循环线程的异步调用等待函数。又例如,当检测到任务循环线程中当前任务的执行是需要等待上一个任务返回数据,且等待时间超过预设阈值时,便可以调用任务循环线程的异步调用等待函数。
119.需要说明的是,此处对预设触发条件并无限制,可以根据应用程序中任务执行过程中遇到的各种会导致任务堵塞且降低任务的运行效率的场景设置预设触发条件。
120.在一实施例中,调用异步等待函数时,可以在当前任务后面插入异步等待函数。例如,如图5所示,当当前任务dofoo1满足预设触发条件时,可以在dofoo1后面插入异步等待函数signal.wait()。
121.其中,当在当前任务后面插入异步等待函数时,可以将异步等待函数后面的待执行任务都由子循环线程执行。例如,如图5所示,任务dofoo2和dofoo3都可以利用子循环线程执行。
122.在一实施例中,调用异步调用等待函数时,可以先确定待执行任务集中调用异步调用等待函数的位置,然后在该位置处调用异步调用等待函数,从而使得异步调用等待函数创建的子循环线程可以在该位置执行目标任务。
123.例如,如图6所示,待执行任务集中包括若干个任务。其中,当检测到任务循环线程执行的当前任务满足预设触发条件,调用异步等待函数时,可以确定待执行任务集中调用异步等待函数的位置。例如,可以在图6中待执行任务6的位置调用异步等待函数,从而使得异步等待函数创建的子循环线程可以执行待执行任务1至待执行任务6。
124.其中,在一实施例中,当检测到任务循环线程执行的当前任务满足预设触发条件时,可以确定当前任务的任务类型,以使得根据任务类型调用任务循环线程的异步调用等待函数。具体地,步骤“当检测到任务循环线程执行的当前任务满足预设触发条件时,调用
任务循环线程的异步调用等待函数,以创建用于执行至少一个目标任务的子循环线程”,可以包括:
125.当检测到任务循环线程执行的当前任务满足预设触发条件时,确定当前任务的任务类型;
126.根据当前任务的任务类型,在待执行任务集中添加位置定位标识;
127.根据位置定位标识调用任务循环线程的异步调用等待函数,并根据位置定位标识从待执行任务集中筛选出至少一个目标任务,以利用异步调用函数创建用于执行至少一个目标任务的子循环线程。
128.其中,位置定位标识包括调用异步调用等待函数以及从待执行任务集中筛选出目标任务时所依据的标志。即通过该位置定位标识,可以知道如何从待执行任务集中筛选处目标任务以及调用异步等待函数。
129.在一实施例中,该位置定位标识可以有多种形式。例如,该位置定位标识可以是一段字符串等等。
130.在一实施例中,可以根据任务的性质将应用程序中的多个任务进行分类,例如,可以将应用程序中的任务划分为调度器任务、微任务和异步线程任务。所以,当检测到任务循环线程执行的当前任务满足预设触发条件时,可以确定当前任务的类型。
131.在一实施例中,由于应用程序中的任务都有任务名称,且该任务名称一般可以作为该任务的标识,即通过该任务名称便可以识别出该任务是什么任务,因此可以通过识别当前任务的任务名称或任务内容从而确定当前任务的任务类型。
132.例如,当当前任务是settimeout()时,可以通过识别任务的名称“settimeout”确定当前任务的任务类型是调度器任务。
133.又例如,当当前任务是promise()时,可以通过识别任务的名称“promise”从而确定当前任务的任务类型是微任务。
134.在一实施例中,由于任务循环线程执行不同类型的任务所需要的时间、不同类型的任务的执行结果都有可能不同,所以针对不同类型的任务,在调用异步调用等待函数时有不同的处理方式。因此,可以根据当前任务不同的任务类型,在待执行任务集中的不同位置添加位置定位标识。
135.例如,当任务类型包括调度器任务、微任务、异步线程任务和其他任务时,由于异步线程任务的执行时间大于微任务的执行时间,而微任务的执行时间又大于调度器任务的执行时间。因此,如图6所示,根据当前任务的任务类型,在待执行任务集中添加位置定位标识时,异步线程任务可以在待执行任务7处添加位置定位标识,微任务可以在待执行任务5处添加位置定位标识,调度器任务可以在待执行任务2处添加位置定位标识,从而使得可以根据位置定位标识调用异步调用等待函数,并从待执行任务集中筛选处至少一个目标任务。
136.在一实施例中,由于可以根据当前任务不同的任务类型,在待执行任务集中的不同位置添加位置定位标识,而添加位置定位标识的位置又关联到如何确定目标任务。因此,可以预先设置好一个任务类型和目标任务之间的关系映射表,从而使得可以根据该关系映射表添加位置定位标识。
137.具体地,步骤“根据当前任务的任务类型,在待执行任务集中添加位置定位标识”,
包括:
138.根据当前任务的任务类型,在预设关系映射表中获取目标任务筛选信息;
139.根据目标任务筛选信息在待执行任务集中添加位置定位标识。
140.其中,目标任务筛选信息包括目标任务的筛选信息。例如,目标任务筛选信息可以包括目标任务的数量、目标任务的类型等等中的至少一种。
141.例如,当前任务的任务类型是调度器任务时,目标任务筛选信息可以是目标任务的数量5。又例如,当前任务的任务类型是微任务时,目标任务筛选信息可以是目标任务的数量3,等等。
142.因此,可以根据当前任务的任务类型,再预设关系映射表中获取目标任务筛选信息,并根据目标任务筛选信息在待执行任务集中添加位置定位标识。
143.在一实施例中,当目标任务筛选信息是目标任务的数量,而待执行任务集中待执行任务的数量小于目标任务的数量时,便可以在待执行任务集中执行顺序在最末位的待执行任务处添加位置定位标识。
144.例如,目标任务的数量为7,而待执行任务集中只有4个待执行任务,此时,便可以在待执行任务集中执行顺序在最末位的待执行任务处添加位置定位标识。
145.在一实施例中,当任务筛选信息是目标任务的类型时,可以将待执行任务的任务类型和目标任务的任务类型相匹配,当待执行任务的任务类型和目标任务的任务类型相匹配时,可以在待执行任务处添加位置定位标识,并将具有位置定位标识的待执行任务筛选出来作为目标任务。并在具有位置定位标识且执行顺序在末尾的待执行任务处调用异步调用等待函数。
146.在一实施例中,在利用异步调用函数创建用于执行至少一个目标任务的子循环线程时,可以利用异步调用等待函数触发任务执行引擎创建子循环线程,并将至少一个目标任务添加至子循环线程中执行。具体地,步骤“利用所述异步调用函数创建用于执行至少一个目标任务的子循环线程”,包括:
147.利用异步调用等待函数触发任务执行引擎调用线程创建函数创建子循环线程。
148.其中,任务执行引擎包括将应用程序中的任务分配至计算机设备中的线程进行执行的虚拟机。线程创建函数包括可以创建子循环线程的函数。
149.在一实施例中,由于应用程序中各个任务的本质都是计算机程序,而计算机程序通常是由某种编程语言编写的,所以在计算机设备执行应用程序中的任务时,任务执行引擎可以将编程语言转换成计算机设备可以识别的语言,并将应用程序中的任务分配至线程中执行。
150.其中,任务执行引擎可以包括v8引擎或者javascript引擎等等。且,不同的任务执行引擎可以有不同的线程创建函数。
151.例如,当任务执行引擎是v8引擎时,可以通过“v8::platform::pumpmessageloop”创建子循环线程。
152.又例如,当任务执行引擎是javascript引擎时,可以利用cfrunlooprun创建子循环线程。
153.在一实施例中,在创建了子循环线程后,可以将目标任务添加至子循环线程中,以使得子循环线程执行至少一个目标任务。
154.例如,如图7所述,目标任务筛选信息包括目标任务的数量,且该目标任务数量为4。此时,可以在待执行任务7处添加位置定位标识并调用异步调用等待函数,以使得异步调用等待函数创建子循环线程执行待执行任务1至待执行任务4。
155.又例如,如图8所述,目标任务筛选信息包括目标任务的类型。经过匹配,得到待执行任务1、待执行任务4和待执行任务5的任务类型和目标任务的任务类型相匹配。此时,可以在分别在待执行任务1、待执行任务4和待执行任务5处添加位置定位标识,并调用异步调用等待函数,以使得异步调用等待函数创建子循环线程执行待执行任务1、待执行任务4和待执行任务5。
156.104、利用子循环线程执行至少一个目标任务。
157.在创建子循环线程后,便可以利用子循环线程执行至少一个目标任务。
158.在一实施例中,在利用子循环线程执行至少一个目标任务之前,可以确定目标任务在待执行任务集中的执行顺序,以使得利用子循环线程可以根据该执行顺序执行至少一个目标任务。
159.例如,确定利用子循环线程执行的目标任务包括目标任务1、目标任务2和目标任务3。其中,目标任务1在待执行任务集中的执行顺序为第二位,目标任务2在待执行任务集中的执行顺序为第三位,目标任务3在待执行任务集中的执行顺序为第三位。则子循环线程便是根据目标任务在待执行任务集中的执行顺序执行目标任务。
160.通过令子循环线程根据执行顺序执行目标任务,可以使得任务集中的待执行任务仍能够按照执行顺序执行,避免任务在执行的过程遗漏或丢失,提高了任务执行的稳定性和鲁棒性。
161.在一实施例中,在利用子循环线程执行目标任务的过程中,若检测到子循环线程执行的当前任务满足预设触发条件时,也可以在子循环线程中调用异步调用等待函数,以使得执行顺序在子循环线程执行的当前任务之后的目标任务被执行。
162.105、当检测到异步调用等待函数接收到当前任务的执行结果时,基于执行结果触发任务循环线程执行所述待执行任务集中未执行任务。
163.其中,未执行任务包括任务集中还没执行的任务。
164.在利用子循环线程执行目标的过程中,任务循环线程也在执行着当前任务。当检测到异步调用等待函数接收到当前任务的执行结果时,说明当前任务已执行完毕,这时,便可以基于该执行结果触发任务循环线程执行待执行任务集中未执行任务。
165.在一实施例中,由于任务循环线程中和子循环线程中都有可能包括未执行任务,因此当检测到异步调用等待函数接收到当前任务的执行结果时,可以先对子循环线程中的目标任务进行执行状态检测,然后根据该执行状态触发任务循环线程执行任务集中未执行任务。具体地,步骤“当检测到异步调用等待函数接收到当前任务的执行结果时,基于执行结果触发任务循环线程执行待执行任务集中未执行任务”,包括:
166.当检测到异步调用等待函数接收到当前任务的执行结果时,对子循环线程中的目标任务进行执行状态检测,得到目标任务的执行状态;
167.根据执行状态触发任务循环线程执行任务集中未执行任务。
168.其中,目标任务的执行状态包括子循环线程中的目标任务是否有执行完毕的状态。例如,子循环线程中包括4个目标任务,其中,有两个目标任务已执行完毕,则这两个目
标任务的执行状态为已执行完毕。而另外两个目标任务未执行完,则这两个目标任务的执行状态为未执行完毕。此时,可以根据目标任务的执行状态执行任务集中的未执行任务。
169.在一实施例中,当检测到子循环线程中包括未执行任务时,可以确定未执行任务在待执行任务集中的执行顺序,然后根据该执行顺序触发任务循环线程根据该执行顺序执行未执行任务。具体地,步骤“根据执行状态触发任务循环线程执行任务集中未执行任务”,包括:
170.当检测到子循环线程中包括未执行任务时,确定未执行任务在待执行任务集中的执行顺序;
171.根据执行顺序触发任务循环线程根据执行顺序执行未执行任务。
172.例如,如图9所示,子循环线程中已执行完待执行任务1和待执行任务2,未执行待执行任务3和待执行任务4。当检测到子循环线程中包括未执行任务时,可以确定待执行任务3和待执行任务4在待执行任务集中的执行顺序。在确定了待执行任务3和待执行任务4的执行顺序后,便可以根据执行顺序触发任务循环线程根据执行顺序执行未执行任务。
173.在一实施例中,当检测到子循环线程未包括未执行任务时,则可以在待执行任务集中确定未执行任务,然后触发任务循环线程执行未执行任务。具体地,步骤“根据执行状态触发任务循环线程执行任务集中未执行任务”,可以包括:
174.当检测到子循环线程中未包括未执行任务时,在待执行任务集中确定未执行任务;
175.触发任务循环线程执行未执行任务。
176.例如,如图10所示,子循环线程已把待执行任务1、待执行任务2、待执行任务3和待执行任务4执行完毕。当检测到子循环线程中未包括未执行任务时,便可以在待执行任务集中确定未执行任务。当在待执行任务集中确定待执行任务包括待执行任务5至待执行任务n时,便可以触发任务循环线程执行待执行任务5至待执行任务n。
177.在一实施例中,当检测到任务循环线程执行的当前任务满足预设触发条件时,可以对当前任务的任务执行状态进行检测,当检测到任务状态改变时,可以调用任务循环线程中的异步通知函数获取当前任务的执行结果,并通过异步通知函数将执行结果传递至异步调用等待函数。具体地,本技术实施例提出的异步调用方法还包括:
178.当检测到所述任务循环线程执行的当前任务满足预设触发条件时,对当前任务的任务执行状态进行检测;
179.当检测到所述任务执行状态改变时,调用所述任务循环线程中的异步通知函数获取所述当前任务的执行结果;
180.通过所述异步通知函数将所述执行结果传递至所述异步调用等待函数。
181.其中,当前任务的任务执行状态包括当前任务的执行状态。例如,任务执行状态可以包括当前任务执行完毕的状态、当前任务未执行完毕的状态等等。
182.其中,异步通知函数包括可以获取当前任务的执行结果,并将该执行结构传递至异步调用等待函数的函数。
183.在一实施例中,异步通知函数也是本技术实施例提出的异步调用机制的其中一个功能函数。该异步通知函数的作用包括获取当前任务的执行结果,并将该执行结果传递至异步调用等待函数。
184.在一实施例中,该异步通知函数也可以用多种形式表示。例如,该异步通知函数可以用signal.notify(result)表示,还可以用signal.inform(result)表示等等。本技术实施例对比并无限制。其中,result可以包括当前任务的执行结果。
185.在一实施例中,当检测到当前任务的任务执行状态改变时,便可以调用异步通知函数获取当前任务的执行结果。例如,当检测到当前任务的任务执行状态从未执行完毕变成执行完毕时,便可以调用异步通知函数获取当前任务的执行结果,并通过异步通知函数将执行结果传递给异步调用函数。
186.在本技术提出的异步调用机制中提出异步通知函数,是为了将当前任务的执行结果快速地传递给异步调用函数,以使得可以快速地触发任务循环线程执行待执行任务集中的未执行任务,提高了应用程序中任务的执行效率。
187.本技术实施例提出了一种异步调用方法,该异步调用方法包括:确定应用程序的待执行任务集,待执行任务集包括至少一个按照执行顺序排列的待执行任务;利用应用程序的任务循环线程执行待执行任务集中待执行任务;当检测到任务循环线程执行的当前任务满足预设触发条件时,调用任务循环线程的异步调用等待函数,以创建用于执行至少一个目标任务的子循环线程;利用子循环线程执行至少一个目标任务;当检测到异步调用等待函数接收到当前任务的执行结果时,基于执行结果触发任务循环线程执行待执行任务集中未执行任务。通过本技术实施例提出的异步调用方法,可以在当前任务执行的时间较长或者发生异常的情况下,不需要等待当前任务执行完毕或者异常问题解决完毕后,便可以继续执行当前任务后面的任务,从而提高了应用程序中任务的执行效率。
188.此外,本技术实施例提出的异步调用方法中的异步调用等待函数可以在应用程序的任意任务的任意位置中使用,以使得本技术实施例提出的异步调用机制可以适用于各种应用场景,便于解决各种应用程序在执行任务的过程中会降低任务执行效率的问题。
189.根据上面实施例所描述的方法,以下将举例作进一步详细说明。
190.本技术实施例将以异步调用方法集成在计算机设备上为例来介绍本技术实施例方法。
191.在一实施例中,如图11所示,一种异步调用方法,具体流程如下:
192.201、计算机设备确定应用程序的待执行任务集,待执行任务集包括至少一个按照执行顺序排列的待执行任务。
193.例如,应用程序在当前的时间段包括20个未执行任务,则计算机设备可以从这20个未执行任务中确定10个待执行任务,并将这10个待执行任务添加至待执行任务集中,从而使得该10个待执行任务可以由任务循环线程进行执行。
194.202、计算机设备利用应用程序的任务循环线程执行待执行任务集中待执行任务。
195.203、当计算机设备检测到任务循环线程执行的当前任务满足预设触发条件时,调用任务循环线程的异步调用等待函数,以创建用于执行至少一个目标任务的子循环线程,目标任务包括待执行任务集中执行顺序在所述当前任务之后的任务。
196.在一实施例中,为了提高任务的执行效率,本技术实施例提出了一个异步调用机制,该异步调用机制可以用signal表示。该signal机制中可以包括异步调用等待函数signal.wait()。
197.在一实施例中,在调用异步调用等待函数之前,还可以创建一个异步调用创建函
数wx.createsignal(),该函数表明创建了一个signal对象。
198.在一实施例中,当计算机设备检测到任务循环线程执行的当前任务堵塞时,可以调用异步调用等待函数。
199.例如,如图12所示,当计算机设备检测到任务循环线程执行的当前任务settimeout()执行过程存在堵塞时,计算机设备便可以将settimeout()挂起,并通过调用signal.wait(),使得settimeout()后面的待执行任务dofoo1()和dofoo2()可以执行。
200.204、计算机设备利用子循环线程执行至少一个目标任务。
201.205、当计算机设备检测到异步调用等待函数接收到当前任务的执行结果时,基于执行结果触发任务循环线程执行待执行任务集中未执行任务。
202.在一实施例中,可以在当前任务中调用异步通知函数(signal.notify(result)),并利用signal.notify(result)检测当前任务的任务执行状态。当检测到当前任务的任务执行状态变为任务执行完毕时,signal.notify(result)便可以当前任务的执行结果,即参数result会变为当前任务的执行结果,并将该执行结果传递至异步调用等待函数,以使得异步调用等待函数基于执行结果触发任务循环线程执行待执行任务集中未执行任务。
203.本技术实施例提出了一种异步调用方法,该方法包括计算机设备确定应用程序的待执行任务集,待执行任务集包括至少一个按照执行顺序排列的待执行任务;计算机设备利用应用程序的任务循环线程执行待执行任务集中待执行任务;当检测到任务循环线程执行的当前任务满足预设触发条件时,计算机设备调用任务循环线程的异步调用等待函数,以创建用于执行至少一个目标任务的子循环线程;计算机设备利用子循环线程执行至少一个目标任务;当检测到异步调用等待函数接收到当前任务的执行结果时,计算机设备基于执行结果触发任务循环线程执行待执行任务集中未执行任务,提高了任务的执行效率。
204.在一实施例中,譬如,应用程序是小程序,当前任务是实现小程序中的一个异步的网络请求,例如,如图13所示。在图13中,任务wx.request()是获取网络请求,当前任务success()是输出网络请求的结果。由于任务wx.request()是一个异步的网络请求,因此当前任务success()只能等任务wx.request()返回数据才可以执行,并不能快速地执行当前任务success(),且现有技术中的异步调用方法也不可以将当前任务success()挂起。而在本技术实施中,可以通过使用signal.wait()和signal.notify()从而实现将当前任务success()挂起。例如,如图14所示,通过使用signal.wait()和signal.notify()从而实现将当前任务success()挂起,继续执行待执行任务集中的待执行任务。当signal.notify()检测到succres()得到执行结果时,便会将执行结果传递至signal.wait(),以使得任务循环现在继续执行待执行任务集中的未执行任务,提高了任务的执行效率。
205.为了更好地实施本技术实施例提供的检测方法,在一实施例中还提供了一种测试检验装置,该测试检验装置可以集成于计算机设备中。其中名词的含义与上述产品的测试检验方法中相同,具体实现细节可以参考方法实施例中的说明。
206.在一实施例中,提供了一种异步调用装置,该异步调用装置具体可以集成在计算机设备中,如图15所示,该测试检验装置包括:确定单元301、第一执行单元302、调用单元303、第二执行单元304和触发单元305,具体如下:
207.确定单元301,用于确定应用程序的待执行任务集,所述待执行任务集包括至少一个按照执行顺序排列的待执行任务;
208.第一执行单元302,用于利用所述应用程序的任务循环线程执行所述待执行任务集中待执行任务;
209.调用单元303,用于当检测到所述任务循环线程执行的当前任务满足预设触发条件时,调用所述任务循环线程的异步调用等待函数,以创建用于执行至少一个目标任务的子循环线程,所述目标任务包括所述待执行任务集中执行顺序在所述当前任务之后的任务;
210.第二执行单元304,用于利用所述子循环线程执行至少一个目标任务;
211.触发单元305,用于当检测到所述异步调用等待函数接收到所述当前任务的执行结果时,基于所述执行结果触发所述任务循环线程执行所述待执行任务集中未执行任务。
212.在一实施例中,如图16所示,调用单元303包括:
213.确定子单元3031,用于当检测到所述任务循环线程执行的当前任务满足预设触发条件时,确定所述当前任务的任务类型;
214.添加子单元3032,用于根据所述当前任务的任务类型,在所述待执行任务集中添加位置定位标识;
215.调用子单元3033,用于根据所述位置定位标识调用任务循环线程的异步调用等待函数,并根据所述位置定位标识从所述待执行任务集中筛选出所述至少一个目标任务,以利用所述异步调用等待函数创建用于执行至少一个目标任务的子循环线程。
216.在一实施例中,添加子单元3032可以包括:
217.获取模块,用于根据所述当前任务的任务类型,在预设关系映射表中获取目标任务筛选信息;
218.添加模块,用于根据所述目标任务筛选信息在所述待执行任务集中添加位置定位标识。
219.在一实施例中,所述调用子单元3033可以包括:
220.触发模块,用于利用所述异步调用等待函数触发任务执行引擎调用线程创建函数创建所述子循环线程。
221.在一实施例中,如图16所示,所述触发单元305包括:
222.检测子单元3051,用于当检测到所述异步调用等待函数接收到所述当前任务的执行结果时,对所述子循环线程中的目标任务进行执行状态检测,得到所述目标任务的执行状态;
223.触发子单元3052,用于根据所述执行状态触发所述任务循环线程执行所述待执行任务集中未执行任务。
224.在一实施例中,所述触发子单元3052包括:
225.确定模块,用于当检测到所述子循环线程中包括未执行任务时,确定所述未执行任务在所述待执行任务集中的执行顺序;
226.触发模块,用于根据所述执行顺序触发所述任务循环线程根据所述执行顺序执行所述未执行任务。
227.具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
228.通过上述的异步调用装置可以在当前任务执行的时间较长或者发生异常的情况下,不需要等待当前任务执行完毕或者异常问题解决完毕后,便可以继续执行当前任务后面的任务,从而提高了应用程序中任务的执行效率。
229.本技术实施例还提供一种计算机设备,该计算机设备可以包括终端或服务器,比如,计算机设备可以作为测试检验终端,该终端可以为手机、平板电脑等等;又比如计算机设备可以为服务器,如测试检验服务器等。如图17所示,其示出了本技术实施例所涉及的终端的结构示意图,具体来讲:
230.该计算机设备可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403和输入单元404等部件。本领域技术人员可以理解,图17中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
231.处理器401是该计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行计算机设备的各种功能和处理数据,从而对计算机设备进行整体监控。可选的,处理器401可包括一个或多个处理核心;优选的,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户页面和应用程序等,调制解调处理器主要处理无线通讯。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。
232.存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。
233.计算机设备还包括给各个部件供电的电源403,优选的,电源403可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
234.该计算机设备还可包括输入单元404,该输入单元404可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
235.尽管未示出,计算机设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,计算机设备中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能,如下:
236.确定应用程序的待执行任务集,所述待执行任务集包括至少一个按照执行顺序排列的待执行任务;
237.利用所述应用程序的任务循环线程执行所述待执行任务集中待执行任务;
238.当检测到所述任务循环线程执行的当前任务满足预设触发条件时,调用所述任务循环线程的异步调用等待函数,以创建用于执行至少一个目标任务的子循环线程,所述目标任务包括所述待执行任务集中执行顺序在所述当前任务之后的任务;
239.利用所述子循环线程执行至少一个目标任务;
240.当检测到所述异步调用等待函数接收到所述当前任务的执行结果时,基于所述执行结果触发所述任务循环线程执行所述待执行任务集中未执行任务。
241.以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
242.根据本技术的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例中各种可选实现方式中提供的方法。
243.本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过计算机程序来完成,或通过计算机程序控制相关的硬件来完成,该计算机程序可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
244.为此,本技术实施例还提供一种存储介质,其中存储有计算机程序,该计算机程序能够被处理器进行加载,以执行本技术实施例所提供的任一种异步调用中的步骤。例如,该计算机程序可以执行如下步骤:
245.确定应用程序的待执行任务集,所述待执行任务集包括至少一个按照执行顺序排列的待执行任务;
246.利用所述应用程序的任务循环线程执行所述待执行任务集中待执行任务;
247.当检测到所述任务循环线程执行的当前任务满足预设触发条件时,调用所述任务循环线程的异步调用等待函数,以创建用于执行至少一个目标任务的子循环线程,所述目标任务包括所述待执行任务集中执行顺序在所述当前任务之后的任务;
248.利用所述子循环线程执行至少一个目标任务;
249.当检测到所述异步调用等待函数接收到所述当前任务的执行结果时,基于所述执行结果触发所述任务循环线程执行所述待执行任务集中未执行任务。
250.以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
251.由于该存储介质中所存储的计算机程序,可以执行本技术实施例所提供的任一种异步调用方法中的步骤,因此,可以实现本技术实施例所提供的任一种异步调用方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
252.以上对本技术实施例所提供的一种异步调用方法、装置、计算机设备和可读存储介质进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1