本发明涉及计算机,尤其涉及一种程序执行方法、装置、电子设备及存储介质。
背景技术:
1、目前,开发人员针对各种开发任务,可以借助外部提供的一些工具包(如依赖包)来满足其开发任务的基础业务需求。其中,依赖包可以理解为:从外部得到的,可以依赖于其所提供的功能的工具包。
2、然而,依赖包内部的程序执行流程对于开发人员来说是黑盒,开发人员不清楚也无法更改依赖包中的程序执行流程,使得依赖包提供的程序无法满足开发人员在某些场景下,需要更改依赖包中程序执行流程的需求。
技术实现思路
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、第五执行子模块,用于将所述执行参数值传入所述第一待插入函数中进行执行,得到所述第一待插入函数的执行结果;
37、第六执行子模块,用于将所述第一待插入函数的执行结果传入所述可扩展函数中进行执行,得到所述可扩展函数的第二执行结果;
38、第七执行子模块,用于将所述可扩展函数的第二执行结果传入所述第二待插入函数中进行执行。
39、可选的,所述装置还包括:
40、执行终止模块,用于响应于所述待插入函数的第一执行结果为报错信息,终止所述程序的执行。
41、可选的,所述装置还包括:
42、函数暴露模块,用于向外暴露所述程序中的可扩展函数;
43、参数接收模块,用于接收所述可扩展函数的传入参数,所述传入参数至少包括:所述可扩展函数对应的待插入函数、所述待插入函数标识;
44、关联存储模块,用于将所述可扩展函数对应的待插入函数以及所述待插入函数标识进行关联存储;
45、参数生成模块,用于生成所述可扩展函数的执行参数。
46、本发明实施例第三方面提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明第一方面所述的程序执行方法中的步骤。
47、本发明实施例第四方面提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行时实现本发明第一方面所述的程序执行方法的步骤。
48、采用本发明实施例提供的程序执行方法,在依赖包程序的执行过程中,响应于监听到对可扩展函数的读操作,确定是否存在该可扩展函数的执行参数;响应于存在可扩展函数的执行参数,根据执行参数中的待插入函数标识,确定待插入函数以及待插入函数与可扩展函数之间的执行顺序;根据执行参数中的执行参数值、可扩展函数、待插入函数以及执行顺序,更改依赖包中程序的执行流程,以在依赖包的使用过程中,可以根据实际需求实现对依赖包中程序执行流程的更改,从而很大程度上解放了依赖包的限制,使得依赖包可以更加灵活地适应各种场景需求。