本申请涉及一种Lua语言的异步处理方法、装置、计算机设备和存储介质。所述方法包括:通过在主线程获取到业务数据并产生异步请求,根据产生的异步请求启动协程,同时由协程将业务数据上传至服务器,并在服务器进行处理,当服务器对业务数据处理结束后,协程会接收到服务器返回的业务数据处理结果,主线程采用封装的异步回调函数将协程中接收到的处理结果回调至主线程,主线程根据该结果对业务数据进行更新。上述操作实现了在业务需要进行异步处理时,通过协程处理异步操作,主线程调用异步操作的处理结果,主线程不会陷入臃肿的回调中,降低了维护成本,并且提升了整体代码的可读性,降低了运行中的bug率,更加方便业务的开发。发。发。
【技术实现步骤摘要】
Lua语言的异步处理方法、装置、计算机设备和存储介质
[0001]本申请涉及互联网
,特别是涉及一种Lua语言的异步处理方法、装置、计算机设备和存储介质。
技术介绍
[0002]Lua语言是一个小巧的脚本语言,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译和运行。
[0003]随着互联网程序技术的发展,出现了异步处理技术,异步处理是按照不同步的方式进行程序处理,传统的异步处理方式有回调、事件监听,都是将回调方法索引传入异步处理中,当异步处理结束后,调用传入的回调方法。
[0004]然而,传统技术中,针对Lua语言的异步处理方法没有广泛的实现,而且在多个异步回调串联时,代码会陷入臃肿回调代码中,增加了后期维护成本。
技术实现思路
[0005]基于此,有必要针对上述技术问题,提供一种能够降低维护成本的Lua语言的异步处理方法、装置、计算机设备和存储介质。
[0006]一种Lua语言的异步处理方法,所述方法包括:
[0007]主线程获取业务数据中产生的异步请求;
[0008]所述主线程根据所述异步请求启动协程,并由协程将所述业务数据上传至服务器;
[0009]所述协程接收所述服务器返回的对所述业务数据的处理结果;
[0010]所述主线程调用封装的异步回调函数从所述协程中回调所述处理结果,并根据所述处理结果更新所述业务数据。
[0011]在其中一个实施例中,封装的异步回调函数采用帧回调函数,该帧回调函数中包含帧循环,该帧循环通过在主线程中按照预设时间间隔循环执行预设代码片段而实现。
[0012]在其中一个实施例中,主线程调用封装的异步回调函数从协程中回调所述处理结果,包括:
[0013]在所述协程执行异步操作接收处理结果之后,主线程调用帧回调函数,利用帧回调函数中的帧循环检查promise状态,根据检测的所述Prmise状态从所述协程中回调所述处理结果。
[0014]在其中一个实施例中,执行预设代码片段包括:
[0015]检查promise状态;
[0016]调用promise链式回调;
[0017]当promise状态为完成状态时,调用promise链式回调,将异步操作的处理结果作为参数进行传递;
[0018]当promise状态为拒绝状态时,调用promise链式回调,将异步操作产生的错误作为参数进行传递,并删除异步操作中被取消的异步错误。
[0019]在其中一个实施例中,删除异步操作中被取消的异步错误包括:
[0020]通过cancel接口删除异步操作中被取消的异步错误。
[0021]在其中一个实施例中,该方法还包括;
[0022]在所述协程向所述服务器发送请求后,暂停协程,在所述服务器返回的对所述业务数据的处理结果之后,继续协程。
[0023]在其中一个实施例中,该方法还包括:
[0024]在检测到主动中断异步操作的情况下,中断所述业务协程,并中断该协程所有调用堆栈的协程。
[0025]一种Lua语言的异步处理装置,所述装置包括:
[0026]启动模块,用于主线程获取业务数据中产生的异步请求;
[0027]请求模块,用于所述主线程根据所述异步请求启动协程,并由协程将所述业务数据上传至服务器;
[0028]接收模块,用于所述协程接收所述服务器返回的对所述业务数据的处理结果;
[0029]更新模块,用于所述主线程调用封装的异步回调函数从所述协程中回调所述处理结果,并根据所述处理结果更新所述业务数据。
[0030]一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
[0031]主线程获取业务数据中产生的异步请求;
[0032]所述主线程根据所述异步请求启动协程,并由协程将所述业务数据上传至服务器;
[0033]所述协程接收所述服务器返回的对所述业务数据的处理结果;
[0034]所述主线程调用封装的异步回调函数从所述协程中回调所述处理结果,并根据所述处理结果更新所述业务数据。
[0035]一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
[0036]主线程获取业务数据中产生的异步请求;
[0037]所述主线程根据所述异步请求启动协程,并由协程将所述业务数据上传至服务器;
[0038]所述协程接收所述服务器返回的对所述业务数据的处理结果;
[0039]所述主线程调用封装的异步回调函数从所述协程中回调所述处理结果,并根据所述处理结果更新所述业务数据。
[0040]上述Lua语言的异步处理方法、装置、计算机设备和存储介质,通过主线程获取到业务数据中产生的异步请求,并根据该请求启动协程,同时由协程将业务数据上传至服务器,服务器端对上传的业务数据进行处理,处理结束后,由协程接收服务器返回的对业务数据的处理结果,同时主线程调用封装的异步回调函数从协程中回调处理结果,并根据处理结果更新业务数据,业务数据更新后即可根据更新了的业务数据更新相应的业务,该方法实现了在业务需要进行异步处理时,通过协程处理异步操作,主线程调用异步操作的处理
结果,主线程不会陷入臃肿的回调中,降低了维护成本,并且提升了整体代码的可读性,降低了运行中的bug率,更加方便业务的开发。
附图说明
[0041]图1为一个实施例中Lua语言的异步处理方法的应用环境图;
[0042]图2为一个实施例中Lua语言的异步处理方法的流程示意图;
[0043]图3为一个实施例中Lua语言的异步处理的逻辑流程示意图;
[0044]图4为一个实施例中传统回调处理方式的示意图;
[0045]图5为一个实施例中promise处理方式的示意图;
[0046]图6为一个实施例中Lua语言的异步处理装置的结构框图;
[0047]图7为一个实施例中计算机设备的内部结构图。
具体实施方式
[0048]为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
[0049]本申请提供的Lua语言的异步处理方法,可以应用于如图1所示的应用环境中。其中,终端102通过将业务数据上传至服务器104,实现与服务器104的交互。其中,终端102可以但不限于是各种个人计算机、笔记本电脑平板电脑,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
[0050]在一个实施例中,如图2所示,提供了一种Lua语言的异步处理方法,以该方法应用于图1中的终端为例进行说明,包括以下步骤:
[0051]步骤S202,主线程获取业务数据本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种Lua语言的异步处理方法,其特征在于,所述方法包括:主线程获取业务数据中产生的异步请求;所述主线程根据所述异步请求启动协程,并由协程将所述业务数据上传至服务器;所述协程接收所述服务器返回的对所述业务数据的处理结果;所述主线程调用封装的异步回调函数从所述协程中回调所述处理结果,并根据所述处理结果更新所述业务数据。2.根据权利要求1所述的方法,其特征在于,所述封装的异步回调函数采用帧回调函数,所述帧回调函数中包含帧循环,所述帧循环通过在主线程中按照预设时间间隔循环执行预设代码片段而实现。3.根据权利要求2所述的方法,其特征在于,所述主线程调用封装的异步回调函数从所述协程中回调所述处理结果,包括:在所述协程执行异步操作接收所述处理结果之后,所述主线程调用所述帧回调函数,利用所述帧回调函数中的所述帧循环检查promise状态,根据检测的所述promise状态从所述协程中回调所述处理结果。4.根据权利要求2所述的方法,其特征在于,所述执行预设代码片段包括:检查promise状态;调用promise链式回调;当所述promise状态为完成状态时,调用所述promise链式回调,将异步操作的处理结果作为参数进行传递;当所述promise状态为拒绝状态时,调用所述promise链式回调,将异步操作产生的错误作为参数进行传递,并删除所述异步操作...
【专利技术属性】
技术研发人员:魏巍,
申请(专利权)人:深圳市九九互动科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。