CN113568686A - Lua语言的异步处理方法、装置、计算机设备和存储介质 - Google Patents

Lua语言的异步处理方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN113568686A
CN113568686A CN202110981559.7A CN202110981559A CN113568686A CN 113568686 A CN113568686 A CN 113568686A CN 202110981559 A CN202110981559 A CN 202110981559A CN 113568686 A CN113568686 A CN 113568686A
Authority
CN
China
Prior art keywords
asynchronous
coroutine
main thread
processing result
service data
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.)
Granted
Application number
CN202110981559.7A
Other languages
English (en)
Other versions
CN113568686B (zh
Inventor
魏巍
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Jiujiu Interactive Technology Co ltd
Original Assignee
Shenzhen Jiujiu Interactive Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Jiujiu Interactive Technology Co ltd filed Critical Shenzhen Jiujiu Interactive Technology Co ltd
Publication of CN113568686A publication Critical patent/CN113568686A/zh
Application granted granted Critical
Publication of CN113568686B publication Critical patent/CN113568686B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请涉及一种Lua语言的异步处理方法、装置、计算机设备和存储介质。所述方法包括:主线程获取业务数据中产生的异步请求;所述主线程根据所述异步请求启动协程,并由所述协程将所述业务数据上传至服务器,并通过所述协程接收所述服务器返回的对所述业务数据的处理结果;所述主线程调用封装的异步回调函数从所述协程中回调所述处理结果,并根据所述处理结果更新所述业务数据。上述操作实现了在业务需要进行异步处理时,通过协程处理异步操作,主线程调用异步操作的处理结果,主线程不会陷入臃肿的回调中,降低了维护成本,并且提升了整体代码的可读性,提高了业务开发效率,精简代码文件大小,降低了运行中的bug率。

Description

Lua语言的异步处理方法、装置、计算机设备和存储介质
本申请要求于2020年10月30日提交中国专利局、申请号2020111920281,发明名称为“Lua语言的异步处理方法、装置、计算机设备和存储介质”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及互联网技术领域,特别是涉及一种Lua语言的异步处理方法、装置、计算机设备和存储介质。
背景技术
Lua语言是一个小巧的脚本语言,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译和运行。
随着互联网程序技术的发展,出现了异步处理技术,异步处理是按照不同步的方式进行程序处理,传统的异步处理方式有回调、事件监听,都是将回调方法索引传入异步处理中,当异步处理结束后,调用传入的回调方法。
然而,传统技术中,针对Lua语言的异步处理方法没有广泛的实现,而且在多个异步回调串联时,代码会陷入臃肿回调代码中,增加了后期维护成本。
发明内容
基于此,有必要针对上述技术问题,提供一种能够降低维护成本的Lua语言的异步处理方法、装置、计算机设备和存储介质。
一种Lua语言的异步处理方法,所述方法包括:
主线程获取业务数据中产生的异步请求;
所述主线程根据所述异步请求启动协程,并由所述协程将所述业务数据上传至服务器,并通过所述协程接收所述服务器返回的对所述业务数据的处理结果;
所述主线程调用封装的异步回调函数从所述协程中回调所述处理结果,并根据所述处理结果更新所述业务数据。
在其中一个实施例中,所述封装的异步回调函数采用帧回调函数,所述帧回调函数中包含帧循环;
所述主线程调用封装的异步回调函数从所述协程中回调所述处理结果,包括:
所述主线程调用所述帧回调函数,利用所述帧回调函数中的所述帧循环检查promise状态,根据检测的所述promise状态从所述协程中回调所述处理结果。
在其中一个实施例中,所述利用所述帧回调函数中的所述帧循环检查promise状态,根据检测的所述promise状态从所述协程中回调所述处理结果,包括:
检查promise状态;
调用promise链式回调;
当所述promise状态为完成状态时,调用所述promise链式回调,将异步操作的处理结果作为参数进行传递;
当所述promise状态为拒绝状态时,调用所述promise链式回调,将异步操作产生的错误作为参数进行传递。
在其中一个实施例中,所述方法还包括:
在将异步操作产生的错误作为参数进行传递的情况下,删除所述异步操作中被取消的异步错误。
在其中一个实施例中,所述方法还包括;
在所述协程向所述服务器发送请求后,暂停所述协程,在所述服务器返回的对所述业务数据的处理结果之后,继续所述协程。
在其中一个实施例中,所述在所述协程向所述服务器发送请求后,暂停所述协程,包括:
在所述协程向所述服务器发送请求后,通过暂停异步逻辑关键字,暂停所述协程。
在其中一个实施例中,所述方法还包括:
在检测到主动中断异步操作的情况下,中断所述协程,并中断所述协程所有调用堆栈的协程。
一种Lua语言的异步处理装置,所述装置包括:
请求获取模块,用于主线程获取业务数据中产生的异步请求;
启动模块,用于所述主线程根据所述异步请求启动协程,并由协程将所述业务数据上传至服务器;
接收模块,用于所述协程接收所述服务器返回的对所述业务数据的处理结果;
更新模块,用于所述主线程调用封装的异步回调函数从所述协程中回调所述处理结果,并根据所述处理结果更新所述业务数据。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
主线程获取业务数据中产生的异步请求;
所述主线程根据所述异步请求启动协程,并由协程将所述业务数据上传至服务器;并通过所述协程接收所述服务器返回的对所述业务数据的处理结果;
所述主线程调用封装的异步回调函数从所述协程中回调所述处理结果,并根据所述处理结果更新所述业务数据。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
主线程获取业务数据中产生的异步请求;
所述主线程根据所述异步请求启动协程,并由协程将所述业务数据上传至服务器,并通过所述协程接收所述服务器返回的对所述业务数据的处理结果;
所述主线程调用封装的异步回调函数从所述协程中回调所述处理结果,并根据所述处理结果更新所述业务数据。
上述Lua语言的异步处理方法、装置、计算机设备和存储介质,通过主线程获取到业务数据中产生的异步请求,并根据该请求启动协程,同时由协程将业务数据上传至服务器,服务器端对上传的业务数据进行处理,处理结束后,由协程接收服务器返回的对业务数据的处理结果,同时主线程调用封装的异步回调函数从协程中回调处理结果,并根据处理结果更新业务数据,业务数据更新后即可根据更新了的业务数据更新相应的业务,该方法实现了在业务需要进行异步处理时,通过协程处理异步操作,主线程调用异步操作的处理结果,主线程不会陷入臃肿的回调中,降低了维护成本,并且提升了整体代码的可读性,提高了业务开发效率,精简代码文件大小,降低了运行中的bug率。
附图说明
图1为一个实施例中Lua语言的异步处理方法的应用环境图;
图2为一个实施例中Lua语言的异步处理方法的流程示意图;
图3为一个实施例中Lua语言的异步处理的逻辑流程示意图;
图4为一个实施例中传统回调处理方式的示意图;
图5为一个实施例中promise处理方式的示意图;
图6为一个实施例中未使用promise处理的流程示意图;
图7为一个实施例中使用promise处理的流程示意图;
图8为一个实施例中Lua语言的异步处理装置的结构框图;
图9为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的Lua语言的异步处理方法,可以应用于如图1所示的应用环境中。其中,终端102通过将业务数据上传至服务器104,实现与服务器104的交互。其中,终端102可以但不限于是各种个人计算机、笔记本电脑平板电脑,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种Lua语言的异步处理方法,以该方法应用于图1中的终端为例进行说明,包括以下步骤:
步骤S202,主线程获取业务数据中产生的异步请求。
当程序启动时立刻开始运行的线程被叫做程序的主线程。
具体地,在主线程中首先接收业务数据,其中业务数据可以是用户数据、行为数据、商品数据等,该业务数据主要用于实现程序的目的业务要求;获取到业务数据后,主线程还会产生异步请求,该异步请求可以是登录、游戏中的触发技能等。
步骤S204,主线程根据异步请求启动协程,并由协程将业务数据上传至服务器,并通过协程接收服务器返回的对业务数据的处理结果。
具体地,在主线程获取到异步请求后,通过该异步请求,触发启动协程的指令,协程即被启动,上述协程是一种类似线程,但比线程更轻量级并且完全由程序控制的存在。请求启动协程的同时,由协程将业务数据上传至服务器,由服务器对该业务数据进行处理,该处理操作包括对数据进行分类、分流、计算等操作。
在一种可能的实现方式中,所述方法还包括:添加全局方法async(function)作为异步逻辑关键字,用来启动一个协程执行传入方法。该主线程根据异步请求启动协程,包括:主线程根据异步请求,通过异步逻辑关键字,启动协程。async是一个语言关键字,标识一个方法是否按异步方式来处理。
具体地,当服务器完成对业务数据的处理后,会生成对应的处理结果,该结果会返回到协程中,由协程对服务器对数据处理后的处理结果进行接收,上述处理结果可以是登陆成功、或者是游戏中的技能触发成功等。
步骤S206,主线程调用封装的异步回调函数从协程中回调处理结果,并根据处理结果更新业务数据。
具体地,当协程接收到服务器返回的对业务数据的处理结果后,需要通过封装的异步回调函数将处理结果回调至主线程中,主线程根据调回的处理结果,对主线程中的程序继续运行,进而得到程序运行后更新了的业务数据。上述异步回调函数主要用于在异步结束时,对结果进行调用的操作,即调回主线程中,供主线程中的程序继续使用。
上述Lua语言的异步处理方法中,通过在主线程获取业务数据并产生异步请求,根据产生的异步请求启动协程,同时由协程将业务数据上传至服务器,并在服务器进行处理,当服务器对业务数据处理结束后,协程会接收到服务器返回的业务数据处理结果,该处理结果需传回主线程供程序继续运行,因此主线程采用封装的异步回调函数将协程中接收到的处理结果回调至主线程,主线程根据该结果对业务数据进行更新,并根据更新了的业务数据更新相应的业务。上述操作实现了在业务数据需要异步处理时,通过协程处理异步操作,主线程调用异步操作的处理结果,主线程不会陷入臃肿的回调中,降低了维护成本,并且提升了整体代码的可读性,精简代码文件大小,降低了运行中的bug率,提高了业务开发效率,减少后期人力维护成本,缩减运营开支。
此外,lua语言特性是方法执行完成后可以返回多个值,但第三方库都只实现了返回单个值,这样实际是屏蔽了lua语言的一个很好的特性,并且在lua中返回多个值时,如果中间某个值是空,会导致后面的数据丢失。而采用上述lua语言的异步处理方法,可以返回多个值,也可以防止数据丢失。
在一个实施例中,封装的异步回调函数采用帧回调函数,该帧回调函数中包含帧循环,帧循环通过在主线程中按照预设时间间隔循环执行预设代码片段而实现。
具体地,在调用回调函数的时候,该函数采用帧回调函数,帧回调函数内置帧循环,该帧循环的操作发生在主线程,执行帧循环时,该循环会根据预设的时间间隔对预设代码进行循环操作,首先遍历所有promise状态,promise状态包括初始状态、操作完成状态、操作拒绝状态,接着根据遍历的promise状态进行响应处理,尤其当promise状态呈操作拒绝状态时会中断整个堆栈调用,由此减轻程序逻辑的复杂度。其中,promise主要用于异步计算,将异步操作队列化,并返回预期结果。
在一个实施例中,主线程调用封装的异步回调函数从协程中回调处理结果,包括:
在协程执行异步操作接收处理结果之后,所述主线程调用帧回调函数,利用所述帧回调函数中的所述帧循环检查promise状态,根据检测的所述promise状态从所述协程中回调所述处理结果。
具体地,当协程接收到服务器返回的业务数据处理结果之后,该结果需要传回至主线程,而这个传回操作可以由调用回调函数执行,主线程调用帧回调函数,帧回调函数对promise的状态检查后,根据获取到的检查结果,如检查到promise呈现操作成功的状态(fulfilled),进而会将操作成功的处理结果调回至主线程;如果检查到promise呈现操作失败的状态(rejected),则将操作失败的处理结果调回至主线程。其中服务器对业务数据的处理操作可以是对数据进行分类、分流、计算等,分类可以是对不同数据类型进行分类,也可以是对数据优先级进行分类;分流通常用于数据量较大的情况,对数据进行分层、分流的区分;计算可以是在服务器上,根据预设的计算规则,对数据进行计算、分析或者判断操作。在一个实施例中,上述执行预设代码片段,即利用所述帧回调函数中的所述帧循环检查promise状态,根据检测的所述promise状态从所述协程中回调所述处理结果,包括:
检查promise状态;
调用promise链式回调;
当promise状态为完成状态时,调用promise链式回调,将异步操作的处理结果作为参数进行传递;
当promise状态为拒绝状态时,调用promise链式回调,将异步操作产生的错误作为参数进行传递。
具体地,在帧循环中包含预设代码,并对预设代码执行循环操作,该代码首先遍历promise状态,判断promise的状态是初始状态(pending)还是从初始状态变成了操作完成状态(fulfilled)还是从初始状态变成了操作拒绝状态(rejected),如果promise状态为初始状态不调用链式回调;如果promise状态为完成状态(fulfilled),则调用promise链式回调,将异步操作的处理结果作为参数进行传递,传递至主线程需要该结果的程序中,进行后续程序的运行,最终完成程序逻辑的所有执行任务,例如promise状态由登录是否成功决定,那么当登陆成功时,promise状态即为操作完成状态(fulfilled),此时登录成功这个结果对应的数据则作为参数传递至需要这个结果才能后续运行的程序中;如果promise状态为拒绝状态(rejected),则调用promise链式回调,将异步操作产生的错误作为参数进行传递,传递至主线程需要该结果的程序中,进行后续程序的运行,最终完成程序逻辑的所有执行任务。
在一个实施例中,上述方法还包括:在将异步操作产生的错误作为参数进行传递的情况下,删除该异步操作中被取消的异步错误。
在promise状态为拒绝状态(rejected)时,有的失败操作的结果不需要传回至程序继续运行,这种错误可以被取消处理,并会在帧循环中将被取消的错误删除,执行删除操作后就不会影响程序的运行,提高了程序的运行效率。
在一个实施例中,删除异步操作中被取消的异步错误包括:
通过cancel接口删除所述异步操作中被取消的异步错误。
具体地,为了可以删除被取消的异步错误,在帧循环中添加了cancel接口,cancel可以在遇到不需要异常的时候,通过删除异步错误的操作,使得程序不会抛出异常,该操作可以解决主动中断异步的情况,例如网络超时,重试多次还是连不上服务器的时候,客户端会退出所有逻辑重新登录,该操作即为上述主动中断异步的情况,在这种情况下,则需要取消产生的异步错误,并且删除掉该取消信息。
在一个实施例中,上述方法还包括:
在协程向服务器发送请求后,暂停协程,在服务器返回的对所述业务数据的处理结果之后,继续协程。
具体地,在协程向服务器发送请求后,协程暂停,当服务器处理完业务数据,协程继续,由协程对该处理后的处理结果接收后,异步回调函数会将协程中接收到的结果调回至主线程中。
在一种可能的实现方式中,所述方法还包括:添加全局方法await(promise)作为暂停异步逻辑关键字,用来暂停当前协程。其中,await是一个语言关键字,标识当前是否需要等待另一个异步方法结束后再继续当前逻辑。
在协程向服务器发送请求后,暂停协程,包括:在协程向服务器发送请求后,通过暂停异步逻辑关键字,暂停协程。
例如function sleep(sec)
local promise=promise()
settimeout(
--指定时间后回调函数
sec,
function()
promise:resolve()
end
)
Return promise
End
方式一,
async(
function()
--业务逻辑
await(sleep(1))--等待1秒后继续执行,sleep返回
--业务逻辑
end
)
方式二,
async{
function()
--业务逻辑
await{sleep(1)}--等待1秒后继续执行,sleep返回
--业务逻辑
end
}
在一个实施例中,将全局方法async(funtion)封装到类方法定义中,即类中的方法名以async或者_async结尾的方法用协程封装。这样可以屏蔽掉关键字async,使得真正在开发时只需要关注await关键字,大大提高开发效率。
例如,function sleep(sec)
local promise=promise()
settimeout(
--指定时间后回调函数
sec,
function()
promise:resolve()
end
)
return promise end Local asynctest=class(“asynctest”)
方式一,
References:0
Function asynctest:testasync()
--业务逻辑
await(sleep(1))--等待1秒后继续执行,sleep返回promise对象--继续业务逻辑
end
)
方式二,
References:0
function asynctest:test_async()
--业务逻辑
await{sleep(1)}--等待1秒后继续执行,sleep返回
--业务逻辑
end
}
在一个实施例中,该方法还包括:
在检测到主动中断异步操作的情况下,中断协程,并中断该协程所有调用堆栈的协程。
具体地,当协程检测到主动中断异步操作的情况,如网络超时,重试多次还是连不上服务器的时候,客户端会发出退出所有逻辑并重新登录的指令,协程会检测到该指令,即检测到了主动中断异步操作的情况。在检测到主动中断异步操作的情况下,直接中断协程,并中断该协程所有调用堆栈的协程,该方法不仅实现了主动中断异步操作,还减轻了逻辑的复杂度,提高了代码的可读性。
在一个实施例中,如图3所示,在Lua语言的异步处理方法中,分为主线程和协程两部分,主线程用于执行程序的逻辑主体,协程用于辅助,当主线程接收业务数据,并产生异步请求后,则根据该异步请求启动协程,协程将业务数据上传至服务器,当服务器对业务数据处理结束,得到处理结果后,协程则接收服务器返回的对业务数据的处理结果,主线程再通过异步回调函数对处理结果进行回调,调回主线程程序继续运行,最终达到更新业务数据、用户交互、实现定时任务的目的,即程序逻辑执行结束。其中异步回调函数的实现为首先定义promise类的实现方式,其中包含promise的三种状态,分别是初始状态(pending),操作完成状态(fulfilled)以及操作拒绝状态(rejected),除此之外还包含用于跟回调函数对接的调用接口,如next、catch等,同时将全局方法封装进promise函数中,当服务器对业务数据的处理完成后,协程接收到的业务数据通过帧回调将处理结果调回至主线程,帧回调在完成回调操作依靠其中的帧循环,该帧循环包括遍历promise状态;调用promise链式回调函数以及删除取消的异步错误,最终主线程会根据回调回的业务数据处理结果,完成主线程中的业务数据的更新,进而得到更新后的业务。
在一个实施例中,如图4、图5所示,图4展示了传统的回调方式,图5展示了promise回调方式即异步回调方法,均以离开桌子、进入新桌子、更新桌子三步操作为例,传统的回调方式需要在执行完请求离开桌子、请求进入新桌子、刷新桌子全部过程后,才能完成数据传递的全过程,但是在异步回调的方式中,每经历一步都会有一个结果传回主线程中,即在完成请求离开桌子的操作后,对应的结果会立即传回主线程中,供主线程使用,无需等待三步全部按顺序执行完毕,才能得到结果,而且,如果需要中断操作的时候,promise方式也可以实现,但是传统的回调方式却不能实现,因此使用promise方法即异步回调处理方法不仅使业务实现更加方便,业务逻辑也更加清晰。
在Lua语言的异步处理方法中,首先将异步处理的逻辑和方法以Lua语言进行重新的编写,并且添加了全局的方法以及将全局方法进行封装的操作,将业务开发中常见的异步场景进行了Lua语言实现,对异步操作进行标准化的实现,使开发业务更加方便,减轻了逻辑的复杂度,也提高了代码的可读性,进而降低了对开发业务相应代码的维护难度。
如图6所示,在未使用promise方案时,项目初始化流程均在主线程中运行。具体包括:在主线程中运行项目初始化,检测项目是否存在更新,若是,则请求更新配置数据,然后判断是否需要更新,若是,则更新数据,若否,则直接返回。然后再执行登录流程,根据账号和密码向服务器发起连接请求,服务器对账号和密码验证成功,则登录账号,返回登录成功的异步结果,完成初始化。其中,项目是否存在更新,通常可为应用程序是否有新的版本或有新的配置等。
如图7所示,使用了promise后,会将每个异步功能封装成一个promise对象并返回,且这些异步功能直接以协程方式运行。具体包括:在主线程中启动初始化流程,然后启动协程,由协程运行异步逻辑,异步逻辑包括流程控制逻辑,如检查更新、登录等逻辑。其中,检查更新逻辑被封装为一个promise,包括:请求更新配置数据,判断是否需要更新,若是,则更新数据,若否,则无更新。登录逻辑被封装为另一个promise,包括:根据账号和密码向服务器发起登录请求,服务器验证通过后登录账号,并返回登录成功结果。
回调方式如果要等待多个异步结果时,需要定义多个标记位来实现,每个回调里面都有重复的判断逻辑,promise方式能够较好的处理,跟处理单个异步等待一样,只需要一行代码。
此外,可以采用类似于TypeScript对ES5关键字await,async的支持,使用自定义工具对lua代码进行解析并重组,将一个异步方法拆分成多个零散的同步方法,通过对状态值的维护去触发对应的零散方法。
应该理解的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图8所示,提供了一种Lua语言的异步处理装置,包括:请求获取模块802、启动模块804、接收模块806和更新模块808,其中:
请求获取模块802,用于主线程获取业务数据中产生的异步请求。
启动模块804,用于所述主线程根据所述异步请求启动协程,并由协程将所述业务数据上传至服务器。
接收模块806,用于所述协程接收所述服务器返回的对所述业务数据的处理结果。
更新模块808,用于所述主线程调用封装的异步回调函数从所述协程中回调所述处理结果,并根据所述处理结果更新所述业务数据。
上述Lua语言的异步处理装置中,在启动模块通过在主线程获取到业务数据并产生异步请求,在请求模块根据产生的异步请求启动协程,同时由协程将业务数据上传至服务器,并在服务器进行处理,当服务器对业务数据处理结束后,在接收模块协程会接收到服务器返回的业务数据处理结果,该结果需传回主线程供程序继续运行,因此主线程采用封装的异步回调函数将协程中接收到的处理结果回调至主线程,嘴周在更新模块中主线程根据该结果对业务数据进行更新。上述操作实现了在业务数据需要异步处理时,会通过主线程与协程的一个交互过程,完成业务数据的异步处理操作,同时采用封装的异步回调函数,增加了代码的可读性,减少运行中的错误率,使业务的开发更加方便,实现更加简单,减轻了逻辑的复杂度,也提高了代码的可读性,进而降低了对开发业务相应代码的维护难度。
在一个实施例中,在更新模块808中,主线程调用封装的异步回调函数从协程中回调处理结果,封装的异步回调函数采用帧回调函数,该帧回调函数中包含帧循环,帧循环通过在主线程中按照预设时间间隔循环执行预设代码片段而实现。
具体地,在调用回调函数的时候,该函数采用帧回调函数,帧回调函数内置帧循环,该帧循环的操作发生在主线程,执行帧循环时,该循环会根据预设的时间间隔对预设代码进行循环操作,首先遍历所有promise状态,promise状态包括初始状态、操作完成状态、操作拒绝状态,接着根据遍历的promise状态进行响应处理,尤其当promise状态呈操作拒绝状态时会中断整个堆栈调用,由此减轻程序逻辑的复杂度。
在一个实施例中,接收模块806接收处理结果之后,更新模块808执行调用操作,主线程调用帧回调函数,利用所述帧回调函数中的所述帧循环检查promise状态,根据检测的所述promise状态从所述协程中回调所述处理结果。
具体地,当接收模块接收到服务器返回的业务数据处理结果之后,该结果需要传回至主线程,而这个传回操作可以由调用单元执行,通过主线程调用帧回调函数,帧回调函数对promise的状态检查后,根据获取到的检查结果,如检查到promise呈现操作成功的状态,进而会将操作成功的处理结果调回至主线程;如果检查到promise呈现操作失败的状态,则将操作失败的处理结果调回至主线程。
在一个实施例中,即更新模块808还用于执行预设代码片段,即利用所述帧回调函数中的所述帧循环检查promise状态,根据检测的所述promise状态从所述协程中回调所述处理结果,具体包括:
检查promise状态;
调用promise链式回调;
当promise状态为完成状态时,调用promise链式回调,将异步操作的处理结果作为参数进行传递;
当promise状态为拒绝状态时,调用promise链式回调,将异步操作产生的错误作为参数进行传递。
具体地,更新模块808中的帧循环中包含预设代码,并对预设代码执行循环操作,改代码首先遍历promise状态,判断promise的状态是初始状态还是从初始状态变成了操作完成状态还是从初始状态变成了操作拒绝状态,如果promise状态为初始状态不调用链式回调;如果promise状态为完成状态,则调用promise链式回调,将异步操作的处理结果作为参数进行传递,传递至主线程需要该结果的程序中,进行后续程序的运行,最终完成程序逻辑的所有执行任务,例如promise状态由登录是否成功决定,那么当登陆成功时,promise状态即为操作完成状态,此时登录成功这个结果对应的数据则作为参数传递至需要这个结果才能后续运行的程序中;如果promise状态为拒绝状态,则调用promise链式回调,将异步操作产生的错误作为参数进行传递,传递至主线程需要该结果的程序中,进行后续程序的运行,最终完成程序逻辑的所有执行任务。
在一个实施例中,上述更新模块808还用于在将异步操作产生的错误作为参数进行传递的情况下,删除所述异步操作中被取消的异步错误。
在promise状态为拒绝状态时,有的失败操作的结果不需要传回至程序继续运行,这种错误可以被做取消处理,并会在帧循环中将被取消的错误删除,执行删除操作后就不会影响程序的运行,提高了程序的运行效率。
在一个实施例中,上述更新模块808还用于:通过cancel接口删除所述异步操作中被取消的异步错误。
具体地,为了可以删除被取消的异步错误,在帧循环中添加了cancel接口,cancel接口可以在遇到不需要异常的时候,通过删除异步错误的操作,使得程序不会抛出异常,该操作可以解决主动中断异步的情况,例如网络超时,重试多次还是连不上服务器的时候,客户端会退出所有逻辑重新登录,该操作即为上述主动中断异步的情况,在这种情况下,则需要取消产生的异步错误,并且删除掉该取消信息。
在一个实施例中,上述装置还包括控制模块。该控制模块用于在协程向服务器发送请求后,暂停协程,在服务器返回的对所述业务数据的处理结果之后,继续协程。
具体地,在协程向服务器发送请求后,协程暂停,当服务器处理完业务数据,协程继续,并在接收模块接收到处理结果后,异步回调函数会将协程中接收到的结果调回至主线程中,协程释放结果数据后,完成协程任务,协程随之停止。
在一个实施例中,该装置还包括暂停模块:
该暂停模块用于在检测到主动中断异步操作的情况下,中断协程,并中断该协程所有调用堆栈的协程。
具体地,当协程检测到主动中断异步操作的情况,如网络超时,重试多次还是连不上服务器的时候,客户端会发出退出所有逻辑并重新登录的指令,协程会检测到该指令,即检测到了主动中断异步操作的情况。在检测到主动中断异步操作的情况下,直接中断业务协程,并中断该协程所有调用堆栈的协程,该方法不仅实现了主动中断异步操作,还减轻了逻辑的复杂度,提高了代码的可读性。
关于Lua语言的异步处理装置的具体限定可以参见上文中对于Lua语言的异步处理方法的限定,在此不再赘述。上述Lua语言的异步处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储业务数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种Lua语言的异步处理方法。
本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
主线程获取业务数据中产生的异步请求;
所述主线程根据所述异步请求启动协程,并由协程将所述业务数据上传至服务器;
所述协程接收所述服务器返回的对所述业务数据的处理结果;
所述主线程调用封装的异步回调函数从所述协程中回调所述处理结果,并根据所述处理结果更新所述业务数据。
在一个实施例中,处理器执行计算机程序时,封装的异步回调函数采用帧回调函数,该帧回调函数中包含帧循环,帧循环通过在主线程中按照预设时间间隔循环执行预设代码片段而实现。具体地,在调用回调函数的时候,该函数采用帧回调函数,帧回调函数内置帧循环,该帧循环的操作发生在主线程,执行帧循环时,该循环会根据预设的时间间隔对预设代码进行循环操作,首先遍历所有promise状态,promise状态包括初始状态(pending)、操作完成状态(fulfilled)、操作拒绝状态(rejected),接着根据遍历的promise状态进行响应处理,尤其当promise状态呈操作拒绝状态时会中断整个堆栈调用,由此减轻程序逻辑的复杂度。
在一个实施例中,处理器执行计算机程序时主线程调用封装的异步回调函数从协程中回调处理结果,包括:在协程执行异步操作接收处理结果之后,所述主线程调用帧回调函数,利用所述帧回调函数中的所述帧循环检查promise状态,根据检测的所述promise状态从所述协程中回调所述处理结果。具体地,当协程接收到服务器返回的业务数据处理结果之后,该结果需要传回至主线程,而这个传回操作可以由调用回调函数执行,主线程调用帧回调函数,帧回调函数对promise的状态检查后,根据获取到的检查结果,如检查到promise呈现操作成功的状态,进而会将操作成功的处理结果调回至主线程;如果检查到promise呈现操作失败的状态,则将操作失败的处理结果调回至主线程。
在一个实施例中,处理器执行计算机程序时,执行预设代码片段包括:检查promise状态;调用promise链式回调;当promise状态为完成状态时,调用promise链式回调,将异步操作的处理结果作为参数进行传递;当promise状态为拒绝状态时,调用promise链式回调,将异步操作产生的错误作为参数进行传递,并删除所述异步操作中被取消的异步错误。具体地,在帧循环中包含预设代码,并对预设代码执行循环操作,改代码首先遍历promise状态,判断promise的状态是初始状态还是从初始状态变成了操作完成状态还是从初始状态变成了操作拒绝状态,如果promise状态为初始状态不调用链式回调;如果promise状态为完成状态,则调用promise链式回调,将异步操作的处理结果作为参数进行传递,传递至主线程需要该结果的程序中,进行后续程序的运行,最终完成程序逻辑的所有执行任务,例如promise状态由登录是否成功决定,那么当登陆成功时,promise状态即为操作完成状态,此时登录成功这个结果对应的数据则作为参数传递至需要这个结果才能后续运行的程序中;如果promise状态为拒绝状态,则调用promise链式回调,将异步操作产生的错误作为参数进行传递,传递至主线程需要该结果的程序中,进行后续程序的运行,最终完成程序逻辑的所有执行任务,但是在promise状态为拒绝状态时,有的失败操作的结果不需要传回至程序继续运行,这种错误可以被做取消处理,并会在帧循环中将被取消的错误删除,执行删除操作后就不会影响程序的运行,提高了程序的运行效率。
在一个实施例中,处理器执行计算机程序时的删除异步操作中被取消的异步错误包括:通过cancel接口删除所述异步操作中被取消的异步错误。具体地,为了可以删除被取消的异步错误,在帧循环中添加了cancel接口,cancel接口可以在遇到不需要异常的时候,通过删除异步错误的操作,使得程序不会抛出异常,该操作可以解决主动中断异步的情况,例如网络超时,重试多次还是连不上服务器的时候,客户端会退出所有逻辑重新登录,该操作即为上述主动中断异步的情况,在这种情况下,则需要取消产生的异步错误,并且删除掉该取消信息。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:在协程向服务器发送请求后,暂停协程,在服务器返回的对所述业务数据的处理结果之后,继续协程。具体地,在协程向服务器发送请求后,协程暂停,当服务器处理完业务数据,协程继续,由协程对该处理后的处理结果接收后,异步回调函数会将协程中接收到的结果调回至主线程中。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:在检测到主动中断异步操作的情况下,中断业务协程,并中断该协程所有调用堆栈的协程。具体地,当协程检测到主动中断异步操作的情况,如网络超时,重试多次还是连不上服务器的时候,客户端会发出退出所有逻辑并重新登录的指令,协程会检测到该指令,即检测到了主动中断异步操作的情况。在检测到主动中断异步操作的情况下,直接中断业务协程,并中断该协程所有调用堆栈的协程,该方法不仅实现了主动中断异步操作,还减轻了逻辑的复杂度,提高了代码的可读性。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
主线程获取业务数据中产生的异步请求;
所述主线程根据所述异步请求启动协程,并由协程将所述业务数据上传至服务器;
所述协程接收所述服务器返回的对所述业务数据的处理结果;
所述主线程调用封装的异步回调函数从所述协程中回调所述处理结果,并根据所述处理结果更新所述业务数据。
在一个实施例中,计算机程序被处理器执行时,封装的异步回调函数采用帧回调函数,该帧回调函数中包含帧循环,帧循环通过在主线程中按照预设时间间隔循环执行预设代码片段而实现。具体地,在调用回调函数的时候,该函数采用帧回调函数,帧回调函数内置帧循环,该帧循环的操作发生在主线程,执行帧循环时,该循环会根据预设的时间间隔对预设代码进行循环操作,首先遍历所有promise状态,promise状态包括初始状态、操作完成状态、操作拒绝状态,接着根据遍历的promise状态进行响应处理,尤其当promise状态呈操作拒绝状态时会中断整个堆栈调用,由此减轻程序逻辑的复杂度。
在一个实施例中,计算机程序被处理器执行时主线程调用封装的异步回调函数从协程中回调处理结果,包括:在协程执行异步操作接收处理结果之后,所述主线程调用帧回调函数,利用所述帧回调函数中的所述帧循环检查promise状态,根据检测的所述promise状态从所述协程中回调所述处理结果。具体地,当协程接收到服务器返回的业务数据处理结果之后,该结果需要传回至主线程,而这个传回操作可以由调用回调函数执行,主线程调用帧回调函数,帧回调函数对promise的状态检查后,根据获取到的检查结果,如检查到promise呈现操作成功的状态,进而会将操作成功的处理结果调回至主线程;如果检查到promise呈现操作失败的状态,则将操作失败的处理结果调回至主线程。
在一个实施例中,计算机程序被处理器执行时,执行预设代码片段包括:检查promise状态;调用promise链式回调;当promise状态为完成状态时,调用promise链式回调,将异步操作的处理结果作为参数进行传递;当promise状态为拒绝状态时,调用promise链式回调,将异步操作产生的错误作为参数进行传递,并删除所述异步操作中被取消的异步错误。具体地,在帧循环中包含预设代码,并对预设代码执行循环操作,改代码首先遍历promise状态,判断promise的状态是初始状态还是从初始状态变成了操作完成状态还是从初始状态变成了操作拒绝状态,如果promise状态为初始状态不调用链式回调;如果promise状态为完成状态,则调用promise链式回调,将异步操作的处理结果作为参数进行传递,传递至主线程需要该结果的程序中,进行后续程序的运行,最终完成程序逻辑的所有执行任务,例如promise状态由登录是否成功决定,那么当登陆成功时,promise状态即为操作完成状态,此时登录成功这个结果对应的数据则作为参数传递至需要这个结果才能后续运行的程序中;如果promise状态为拒绝状态,则调用promise链式回调,将异步操作产生的错误作为参数进行传递,传递至主线程需要该结果的程序中,进行后续程序的运行,最终完成程序逻辑的所有执行任务,但是在promise状态为拒绝状态时,有的失败操作的结果不需要传回至程序继续运行,这种错误可以被做取消处理,并会在帧循环中将被取消的错误删除,执行删除操作后就不会影响程序的运行,提高了程序的运行效率。
在一个实施例中,计算机程序被处理器执行时的删除异步操作中被取消的异步错误包括:通过cancel接口删除所述异步操作中被取消的异步错误。具体地,为了可以删除被取消的异步错误,在帧循环中添加了cancel接口,cancel可以在遇到不需要异常的时候,通过删除异步错误的操作,使得程序不会抛出异常,该操作可以解决主动中断异步的情况,例如网络超时,重试多次还是连不上服务器的时候,客户端会退出所有逻辑重新登录,该操作即为上述主动中断异步的情况,在这种情况下,则需要取消产生的异步错误,并且删除掉该取消信息。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:在协程向服务器发送请求后,暂停协程,在服务器返回的对所述业务数据的处理结果之后,继续协程。具体地,在协程向服务器发送请求后,协程暂停,当服务器处理完业务数据,协程继续,由协程对该处理后的处理结果接收后,异步回调函数会将协程中接收到的结果调回至主线程中。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:在检测到主动中断异步操作的情况下,中断业务协程,并中断该协程所有调用堆栈的协程。具体地,当协程检测到主动中断异步操作的情况,如网络超时,重试多次还是连不上服务器的时候,客户端会发出退出所有逻辑并重新登录的指令,协程会检测到该指令,即检测到了主动中断异步操作的情况。在检测到主动中断异步操作的情况下,直接中断业务协程,并中断该协程所有调用堆栈的协程,该方法不仅实现了主动中断异步操作,还减轻了逻辑的复杂度,提高了代码的可读性。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种Lua语言的异步处理方法,其特征在于,所述方法包括:
主线程获取业务数据中产生的异步请求;
所述主线程根据所述异步请求启动协程,并由所述协程将所述业务数据上传至服务器,并通过所述协程接收所述服务器返回的对所述业务数据的处理结果;
所述主线程调用封装的异步回调函数从所述协程中回调所述处理结果,并根据所述处理结果更新所述业务数据。
2.根据权利要求1所述的方法,其特征在于,所述封装的异步回调函数采用帧回调函数,所述帧回调函数中包含帧循环;
所述主线程调用封装的异步回调函数从所述协程中回调所述处理结果,包括:
所述主线程调用所述帧回调函数,利用所述帧回调函数中的所述帧循环检查promise状态,根据检测的所述promise状态从所述协程中回调所述处理结果。
3.根据权利要求2所述的方法,其特征在于,所述利用所述帧回调函数中的所述帧循环检查promise状态,根据检测的所述promise状态从所述协程中回调所述处理结果,包括:
检查promise状态;
调用promise链式回调;
当所述promise状态为完成状态时,调用所述promise链式回调,将异步操作的处理结果作为参数进行传递;
当所述promise状态为拒绝状态时,调用所述promise链式回调,将异步操作产生的错误作为参数进行传递。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在将异步操作产生的错误作为参数进行传递的情况下,删除所述异步操作中被取消的异步错误。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括;
在所述协程向所述服务器发送请求后,暂停所述协程,在所述服务器返回的对所述业务数据的处理结果之后,继续所述协程。
6.根据权利要求5所述的方法,其特征在于,所述在所述协程向所述服务器发送请求后,暂停所述协程,包括:
在所述协程向所述服务器发送请求后,通过暂停异步逻辑关键字,暂停所述协程。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在检测到主动中断异步操作的情况下,中断所述协程,并中断所述协程所有调用堆栈的协程。
8.一种Lua语言的异步处理装置,其特征在于,所述装置包括:
请求获取模块,用于主线程获取业务数据中产生的异步请求;
启动模块,用于所述主线程根据所述异步请求启动协程,并由所述协程将所述业务数据上传至服务器;
接收模块,用于所述协程接收所述服务器返回的对所述业务数据的处理结果;
更新模块,用于主线程调用封装的异步回调函数从所述协程中回调所述处理结果,并根据所述处理结果更新所述业务数据。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
CN202110981559.7A 2020-10-30 2021-08-25 Lua语言的异步处理方法、装置、计算机设备和存储介质 Active CN113568686B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202011192028.1A CN112286595A (zh) 2020-10-30 2020-10-30 Lua语言的异步处理方法、装置、计算机设备和存储介质
CN2020111920281 2020-10-30

Publications (2)

Publication Number Publication Date
CN113568686A true CN113568686A (zh) 2021-10-29
CN113568686B CN113568686B (zh) 2023-11-28

Family

ID=74352969

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202011192028.1A Withdrawn CN112286595A (zh) 2020-10-30 2020-10-30 Lua语言的异步处理方法、装置、计算机设备和存储介质
CN202110981559.7A Active CN113568686B (zh) 2020-10-30 2021-08-25 Lua语言的异步处理方法、装置、计算机设备和存储介质

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202011192028.1A Withdrawn CN112286595A (zh) 2020-10-30 2020-10-30 Lua语言的异步处理方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (2) CN112286595A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114584500A (zh) * 2022-02-25 2022-06-03 网易(杭州)网络有限公司 异步通信的测试方法、装置及电子设备
CN116382974A (zh) * 2023-03-21 2023-07-04 安芯网盾(北京)科技有限公司 一种定制化数据的保护处理方法

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113760510B (zh) * 2021-09-07 2023-09-01 福建天泉教育科技有限公司 一种数据采集的优化方法及终端
CN115426156A (zh) * 2022-08-30 2022-12-02 北京商银微芯科技有限公司 多并发异步特性网络请求的处理方法及装置
CN116107778B (zh) * 2023-04-13 2023-07-11 深圳复临科技有限公司 前端事件应答实现方法、装置、终端设备和可读存储介质
CN117270831B (zh) * 2023-11-17 2024-02-23 天津华来科技股份有限公司 一种协议类同步与协程调用兼容实现方法

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120246624A1 (en) * 2011-03-22 2012-09-27 Microsoft Corporation Debugger-set identifying breakpoints after coroutine yield points
CN106844017A (zh) * 2015-12-03 2017-06-13 阿里巴巴集团控股有限公司 用于网站服务器处理事件的方法和设备
CN108156181A (zh) * 2018-02-01 2018-06-12 杭州安恒信息技术股份有限公司 一种基于协程异步io的漏洞探测方法及其漏洞扫描系统
CN108874523A (zh) * 2018-06-21 2018-11-23 深圳点猫科技有限公司 一种基于AI和儿童教育的promise控制异步函数序列的编程方法
CN109257411A (zh) * 2018-07-31 2019-01-22 平安科技(深圳)有限公司 一种业务处理方法、调用管理系统和计算机设备
CN109298922A (zh) * 2018-08-30 2019-02-01 百度在线网络技术(北京)有限公司 并行任务处理方法、协程框架、设备、介质和无人车
CN109739482A (zh) * 2018-12-28 2019-05-10 杭州东信北邮信息技术有限公司 一种基于动态语言的业务逻辑执行系统及方法
CN110247984A (zh) * 2019-06-27 2019-09-17 腾讯科技(深圳)有限公司 业务处理方法、装置及存储介质
CN110908820A (zh) * 2019-11-06 2020-03-24 北京达佳互联信息技术有限公司 一种异步任务的执行方法、装置、设备及存储介质
CN111399815A (zh) * 2020-03-09 2020-07-10 北京计算机技术及应用研究所 一种适用于网络靶场构建的异步函数流程控制方法
CN111506368A (zh) * 2020-04-21 2020-08-07 北京同邦卓益科技有限公司 对异步调用转同步调用的方法、装置、设备及存储介质
CN111767159A (zh) * 2020-06-24 2020-10-13 浙江大学 一种基于协程的异步系统调用系统

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120246624A1 (en) * 2011-03-22 2012-09-27 Microsoft Corporation Debugger-set identifying breakpoints after coroutine yield points
CN106844017A (zh) * 2015-12-03 2017-06-13 阿里巴巴集团控股有限公司 用于网站服务器处理事件的方法和设备
CN108156181A (zh) * 2018-02-01 2018-06-12 杭州安恒信息技术股份有限公司 一种基于协程异步io的漏洞探测方法及其漏洞扫描系统
CN108874523A (zh) * 2018-06-21 2018-11-23 深圳点猫科技有限公司 一种基于AI和儿童教育的promise控制异步函数序列的编程方法
CN109257411A (zh) * 2018-07-31 2019-01-22 平安科技(深圳)有限公司 一种业务处理方法、调用管理系统和计算机设备
CN109298922A (zh) * 2018-08-30 2019-02-01 百度在线网络技术(北京)有限公司 并行任务处理方法、协程框架、设备、介质和无人车
CN109739482A (zh) * 2018-12-28 2019-05-10 杭州东信北邮信息技术有限公司 一种基于动态语言的业务逻辑执行系统及方法
CN110247984A (zh) * 2019-06-27 2019-09-17 腾讯科技(深圳)有限公司 业务处理方法、装置及存储介质
CN110908820A (zh) * 2019-11-06 2020-03-24 北京达佳互联信息技术有限公司 一种异步任务的执行方法、装置、设备及存储介质
CN111399815A (zh) * 2020-03-09 2020-07-10 北京计算机技术及应用研究所 一种适用于网络靶场构建的异步函数流程控制方法
CN111506368A (zh) * 2020-04-21 2020-08-07 北京同邦卓益科技有限公司 对异步调用转同步调用的方法、装置、设备及存储介质
CN111767159A (zh) * 2020-06-24 2020-10-13 浙江大学 一种基于协程的异步系统调用系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
AHL5ESOFT: "lua函数回调技巧", pages 1 - 2, Retrieved from the Internet <URL:https://www.cnblogs.com/ahl5esoft/p/12992059.html> *
BRUCE BELSON等: "A Survey of Asynchronous Programming Using Coroutines in the Internet of Things and Embedded Systems", ACM TRANSACTIONS ON EMBEDDED COMPUTING SYSTEMS, vol. 18, no. 3, pages 1 - 21, XP058677236, DOI: 10.1145/3319618 *
李慧霸等: "网络程序设计中的并发复杂性", 软件学报, vol. 22, no. 1, pages 132 - 148 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114584500A (zh) * 2022-02-25 2022-06-03 网易(杭州)网络有限公司 异步通信的测试方法、装置及电子设备
CN114584500B (zh) * 2022-02-25 2024-03-22 网易(杭州)网络有限公司 异步通信的测试方法、装置及电子设备
CN116382974A (zh) * 2023-03-21 2023-07-04 安芯网盾(北京)科技有限公司 一种定制化数据的保护处理方法

Also Published As

Publication number Publication date
CN112286595A (zh) 2021-01-29
CN113568686B (zh) 2023-11-28

Similar Documents

Publication Publication Date Title
CN113568686A (zh) Lua语言的异步处理方法、装置、计算机设备和存储介质
CN111543037B (zh) 事件驱动的无服务器函数编排
CN111052086B (zh) 一种云托管函数的暖启动技术
US7614059B2 (en) System and method for the discovery and usage of local resources by a mobile agent object
US9934105B2 (en) Fault tolerance for complex distributed computing operations
CN108011909B (zh) 通信方法和系统、电子设备和计算机集群
US20150319221A1 (en) Tracing business transactions based on application frameworks
US11509693B2 (en) Event-restricted credentials for resource allocation
US11151020B1 (en) Method and system for managing deployment of software application components in a continuous development pipeline
CN110750365A (zh) 一种远程过程调用方法、系统、终端及存储介质
CN112699034B (zh) 虚拟登录用户构建方法、装置、设备及存储介质
US20180246949A1 (en) Early thread return with secondary event writes
CN116157781A (zh) 用于丰富客户端应用运行时框架的开箱即用的遥测
CN111294377A (zh) 一种依赖关系的网络请求发送方法、终端装置及存储介质
US7984335B2 (en) Test amplification for datacenter applications via model checking
US20200041987A1 (en) Decoupled load generation architecture
CN111897646A (zh) 异步分布式锁实现方法及其装置、存储介质以及电子设备
US11409511B2 (en) Method and system for downloading information
CN110543360A (zh) 一种任务处理方法及系统
US9819725B1 (en) System, method, and computer program for remotely controlling mobile web applications installed on a mobile device
US10592277B2 (en) System and method for determining the success of a cross-platform application migration
CN113051008A (zh) 接口请求处理方法、装置、计算机设备和存储介质
US11550692B2 (en) Integrated event processing and policy enforcement
CN113703947A (zh) 一种分布式任务处理系统、方法、计算机设备和存储介质
CN115599507A (zh) 数据处理方法、执行工作站、电子设备和存储介质

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
GR01 Patent grant
GR01 Patent grant