网页脚本语言的执行方法及装置的制作方法

文档序号:6432625阅读:161来源:国知局
专利名称:网页脚本语言的执行方法及装置的制作方法
网页脚本语言的执行方法及装置
技术领域
本发明涉及数据处理技术,特别是涉及一种网页脚本语言的执行方法及装置。背景技术
目前,Web应用程序的普及十分迅速,并在浏览器等客户端中通过网页脚本语言实现了 Web应用程序的各种动态展现功能。在网页脚本语言的执行过程中需要暂停的状况时有发生,例如,在数据量比较大的Web应用程序页面中,发起多个请求获取整个页面中的数据,并返回整个页面中的所有数据,这将会产生较长的等待时间,造成了 Web应用程序的缓慢笨拙,此时,若只发送一部分请求,而另一部分请求的发送将暂停,待加载了这一部分请求所返回的数据后再恢复执行发送另一部分请求,这样将大大提高了 Web应用程序的灵活性。但是,由于网页脚本语言中并不具备类似于java中的睡眠函数,网页脚本语言若·需要在执行过程中暂停是非常不方便的。为了使网页脚本语言在执行过程中能够实现睡眠状态,通常将执行的函数强行拆分成两个函数,一个函数执行完毕之后将在设定的时间内暂停执行,待超过设定的时间后执行另一函数。这破坏了原有函数的结构,缺乏灵活性。此外,还可利用ajax技术(Asynchronous JavaScript and XML)中的回调函数来唤醒某个函数来实现网页脚本语言执行过程中的暂停,可是,这将使得网页脚本语言的执行过程依赖于ajax技术,同样存在着缺乏灵活性的问题。

发明内容基于此,有必要提供一种能灵活实现暂停执行的网页脚本语言的执行方法。此外,还有必要提供一种能灵活实现暂停执行的网页脚本语言的执行装置。—种网页脚本语言的执行方法,包括如下步骤执行网页脚本语言主函数;当执行到所述网页脚本语言主函数中的第一函数时,获取设置于所述第一函数中的标记;根据所述标记之后的代码构造第二函数;在达到设定时间后执行所述第二函数。优选地,所述根据所述标记之后的代码构造第二函数的步骤之前还包括记录所述网页脚本语言主函数的执行上下文;所述在达到设定时间后执行所述第二函数的步骤为在达到设定时间后通过所述记录的执行上下文调用所述第二函数;执行所述第二函数。优选地,所述在达到设定时间后通过所述记录的执行上下文调用所述第二函数的步骤之前还包括通过所述第一函数中的定时器判断是否达到设定时间,若是,则进入所述在达到设定时间后通过所述记录的执行上下文调用所述第二函数的步骤。优选地,还包括当执行到所述网页脚本语言主函数中的第一函数时,从所述网页脚本语言主函数中获取时间参数,并传入所述第一函数中作为设定时间。优选地,所述第一函数为睡眠函数。一种网页脚本语言的执行装置,包括主函数执行模块,用于执行网页脚本语言主函数;·标记获取模块,用于当执行到所述网页脚本语言主函数中的第一函数时,获取设置于所述第一函数中的标记;函数构造模块,用于根据所述标记之后的代码构造第二函数;第二函数执行模块,用于在达到设定时间后执行所述第二函数。优选地,还包括记录模块,用于记录所述网页脚本语言主函数的执行上下文;所述第二函数执行模块包括第二函数调用单元,用于在达到设定时间后通过所述记录的执行上下文调用所述
第二函数;执行单元,用于执行所述第二函数。优选地,所述第二函数执行模块还包括定时器单元,用于判断是否达到设定时间,若是,则通知所述第二函数调用单元。优选地,还包括参数传递模块,用于当执行到所述网页脚本语言主函数中的第一函数时,从所述网页脚本语言主函数中获取时间参数,并传入所述第一函数中作为设定时间。优选地,所述第一函数为睡眠函数。上述网页脚本语言的执行方法及装置在网页脚本语言主函数的执行过程中调用第一函数,并通过第一函数将网页脚本语言主函数中还未执行的代码构造成第二函数,进而使得网页脚本语言主函数中还未执行的代码暂停执行,待达到设定时间后通过第二函数执行网页脚本语言主函数中还未执行的代码,灵活地实现了网页脚本语言中的暂停执行,并且不会破坏原有代码的结构,易于控制网页脚本语言中的整个执行过程。

图I为一个实施例中网页脚本语言的执行方法的流程图;图2为图I中在达到设定时间后执行第二函数的方法流程图;图3为一个实施例中网页脚本语言的执行装置的结构示意图;图4为另一个实施例中网页脚本语言的执行装置的结构示意图;图5为图7中第二函数执行模块的结构示意图。
具体实施方式图I示出了一个实施例中网页脚本语言的执行方法,包括如下步骤步骤S110,执行网页脚本语言主函数。
本实施例中,网页脚本语言(Javascript)用于满足浏览器中的用户需求,实现各种应用程序。在用户运行浏览器时将执行对应的网页脚本语言主函数中的代码,例如,若用户在浏览器中开启了某一页面,该页面中存在多个有关联关系的表格,此时为了向该用户展示开启的这一页面,执行网页脚本语言主函数发起多个请求加载多个有关联关系的表格及其数据。具体地,逐行执行网页脚本语言主函数中的代码,对应页面中的多个表格逐个发起请求,逐个加载页面中的每一表格。步骤S130,当执行到网页脚本语言主函数中的第一函数时,获取设置于第一函数中的标记。本实施例中,在逐行执行代码的过程中调用第一函数,此时,由于网页脚本语言是单线程语言,当一个函数被调用时,其它函数必须等待,因此在网页脚本语言主函数执行过程中调用第一函数后,网页脚本语言主函数将进入等待状态。为实现网页脚本语言主函数的暂停执行,第一函数为睡眠函数。例如,网页脚本语言主函数执行到“sleep (this, 10) ;return ;flag”语句时,将调用sleep函数,此时网页脚本语言主函数中还未执行的代码将暂停执行,与不能够暂停的网页脚本语言主函数相比较,实现了暂停的网页脚本语言主函数中的代码仅仅多了一个调用第一函数的语句,如“sleep (this, 10) ;return ;flag”,不会破坏原有网页脚本语言主函数中的代码结构,并且也易于编写和维护。sleep函数中的标记即为flag, flag之前的代码是已经执行了的代码,flag之后的代码是还未执行的代码。步骤S150,根据标记之后的代码构造第二函数。本实施例中,利用网页脚本语言的动态构造函数的能力,将网页脚本语言主函数中未执行的代码动态地封装进新的函数中,对未执行的代码进行前后拼接补充语句,形成
第二函数。具体地,上述根据标记之后的代码构造第二函数的步骤可以是从网页脚本语言主函数中提取出所有的代码,在提取的代码中按照标记截取标记之后的代码,封装截取的代码构造得到第二函数。根据标记可以获知哪些是已经执行了的代码,哪些是还未执行的代码,进而从提取的代码中截取出未执行的代码。利用脚本语言动态构造函数的能力,为截取得到的未执行代码补充语句以形成一个完整的函数,所补充的语句包括了 “functionO {} ”等语句。步骤S170,在达到设定时间后执行第二函数。本实施例中,网页脚本语言主函数中对于未执行的代码,需要暂停一段时间再执行,为实现网页脚本语言主函数中的暂停,包含了网页脚本语言主函数中未执行代码的第二函数将在间隔一个设定时间后执行,此时,网页脚本语言主函数中已经执行了的代码与未执行代码之间将产生间断,不再连续执行。在另一个实施例中,上述步骤S150之前还包括了记录网页脚本语言的执行上下文的步骤。本实施例中,为调用第二函数,还需要记录网页脚本语言的执行上下文,即调用者或拥有者。如图2所示,上述步骤S170的具体过程为
步骤S171,在达到设定时间后通过记录的执行上下文调用第二函数。本实施例中,在已经执行了的代码执行完毕后等待一段时间后再进行第二函数的调用,使网页脚本语言主函数中代码的执行出现了暂停。在另一个实施例中,上述步骤S171之前还包括通过第一函数中的定时器判断是否达到设定时间,若是,则进入步骤S171,若否,则继续通过定时器计时。本实施例中,在第一函数中设定定时器,该定时器中的时间即为设定时间,通过定时器判断是否超时,若是,则开始执行第二函数,若否,则继续通过定时器计时,以判定是否超时。在另一个实施例中,上述网页脚本语言的执行方法还包括当执行到网页脚本语言主函数中的第一函数时,从网页脚本语言主函数中获取时间参数,并传入第一函数中作为设定时间的步骤。本实施例中,网页脚本语言主函数在执行过程中需要暂停时,对应的代码中将包含了时间参数,以告之需要对执行过程进行暂停的时长。步骤S173,执行第二函数。本实施例中,在暂停了一定时间后执行第二函数,对应地,所执行的代码即为网页脚本语言主函数中未执行的代码,实现了网页脚本语言主函数执行过程中的暂停。图3示出了一个实施例中网页脚本语言的执行装置,包括主函数执行模块10、标记获取模块30、函数构造模块50以及第二函数执行模块70。主函数执行模块10,用于执行网页脚本语言主函数。本实施例中,网页脚本语言用于满足浏览器中的用户需求,实现各种应用程序。在用户运行浏览器时将执行对应的网页脚本语言主函数中的代码,例如,若用户在浏览器中开启了某一页面,该页面中存在多个有关联关系的表格,此时为了向该用户展示开启的这一页面,主函数执行模块10将执行网页脚本语言主函数发起多个请求加载多个有关联关系的表格及其数据。具体地,主函数执行模块10逐行执行网页脚本语言主函数中的代码,对应页面中的多个表格逐个发起请求,逐个加载页面中的每一表格。标记获取模块30,用于当执行到网页脚本语言主函数中的第一函数时,获取设置于第一函数中的标记。本实施例中,调用模块30在逐行执行代码的过程中调用第一函数,此时,由于网页脚本语言是单线程语言,当一个函数被调用时,其它函数必须等待,因此调用模块30在网页脚本语言主函数执行过程中调用第一函数后,网页脚本语言主函数将进入等待状态。为实现网页脚本语言主函数的暂停执行,第一函数为睡眠函数。例如,网页脚本语言主函数执行到“sleep (this, 10) ;return ;flag”语句时,调用模块30将调用sleep函数,此时网页脚本语言主函数中还未执行的代码将暂停执行,与不能够暂停的网页脚本语言主函数相比较,实现了暂停的网页脚本语言主函数中的代码仅仅多了一个调用第一函数的语句,如“sleep (this, 10) ;return ;flag”,不会破坏原有网页脚本语言主函数中的代码结构,并且也易于编写和维护。sleep函数中的标记即为flag, flag之前的代码是已经执行了的代码,flag之后的代码是还未执行的代码。函数构造模块50,用于根据标记之后的代码构造第二函数。
本实施例中,利用网页脚本语言的动态构造函数的能力,函数构造模块50将网页脚本语言主函数中未执行的代码动态地封装进新的函数中,对未执行的代码进行前后拼接补充语句,形成第二函数。具体地,函数构造模块50从网页脚本语言主函数中提取出所有的代码,在提取的代码中按照标记截取标记之后的代码,封装截取的代码构造得到第二函数。函数构造模块50根据标记可以获知哪些是已经执行了的代码,哪些是还未执行的代码,进而从提取的代码中截取出未执行的代码。利用脚本语言动态构造函数的能力,为截取得到的未执行代码补充语句以形成一个完整的函数,所补充的语句包括了“functionO H” 等语句。第二函数执行模块70,用于在达到设定时间后执行第二函数。本实施例中,网页脚本语言主函数中对于未执行的代码,需要暂停一段时间再执行,为实现网页脚本语言主函数中的暂停,包含了网页脚本语言主函数中未执行代码的第二函数将通过第二函数执行模块70在间隔一个设定时间后执行,此时,网页脚本语言主函数中已经执行了的代码与未执行代码之间将产生间断,不再连续执行。在另一个实施例中,如图4所示,上述网页脚本语言的执行装置还包括了记录模块90,该记录模块90用于记录网页脚本语言主函数的执行上下文。本实施例中,为调用第二函数,还需要记录模块90记录网页脚本语言的执行上下文,即调用者或拥有者。如图5所示,上述第二函数执行模块70包括第二函数调用单元701以及执行单元703。第二函数调用单元701,用于在达到设定时间后通过记录的执行上下文调用第二函数。本实施例中,在已经执行了的代码执行完毕后等待一段时间后再进行第二函数的调用,使网页脚本语言主函数中代码的执行出现了暂停。在另一个实施例中,上述第二函数执行模块70还包括定时器单元,该定时器单元用于在第一函数中设定并判断是否达到设定时间,若是,则通知第二函数调用单元701,若否,则通过定时器单元继续计时。本实施例中,在第一函数中设定定时器,该定时器中的时间即为设定时间,通过定时器判断是否超时,若是,则通知第二函数调用单元701开始调用第二函数,若否,则继续通过定时器计时,以判定是否超时。在另一个实施例中,上述网页脚本语言的执行装置还包括了参数传递模块,该参数传递模块用于当执行到网页脚本语言主函数中的第一函数时,从网页脚本语言主函数中获取时间参数,并传入第一函数中作为设定时间。本实施例中,网页脚本语言主函数在执行过程中需要暂停时,对应的代码中将包含了时间参数,以告之需要对执行过程进行暂停的时长。执行单元703,用于执行第二函数。本实施例中,在暂停了一定时间后执行第二函数,对应地,所执行的代码即为网页脚本语言主函数中未执行的代码,实现了网页脚本语言主函数执行过程中的暂停。上述网页脚本语言的执行装置运行于浏览器或者Web客户端中。
上述网页脚本语言的执行方法及装置在网页脚本语言主函数的执行过程中调用第一函数,并通过第一函数将网页脚本语言主函数中还未执行的代码构造成第二函数,进而使得网页脚本语言主函数中还未执行的代码暂停执行,待达到设定时间后通过第二函数执行网页脚本语言主函数中还未执行的代码,灵活地实现了网页脚本语言中的暂停执行,并且不会破坏原有代码的结构,易于控制网页脚本语言中的整个执行过程。上述网页脚本语言的执行方法及装置将定时器置于第一函数中,不需要对网页脚本语言主函数进行改造,也不对网页脚本语言主函数造成干扰,保证了执行过程中的稳定性。以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
权利要求
1.一种网页脚本语言的执行方法,包括如下步骤 执行网页脚本语言主函数; 当执行到所述网页脚本语言主函数中的第一函数时,获取设置于所述第一函数中的标记; 根据所述标记之后的代码构造第二函数; 在达到设定时间后执行所述第二函数。
2.根据权利要求I所述的网页脚本语言的执行方法,其特征在于,所述根据所述标记之后的代码构造第二函数的步骤之前还包括 记录所述网页脚本语言主函数的执行上下文; 所述在达到设定时间后执行所述第二函数的步骤为 在达到设定时间后通过所述记录的执行上下文调用所述第二函数; 执行所述第二函数。
3.根据权利要求2所述的网页脚本语言的执行方法,其特征在于,所述在达到设定时间后通过所述记录的执行上下文调用所述第二函数的步骤之前还包括 通过所述第一函数中的定时器判断是否达到设定时间,若是,则进入所述在达到设定时间后通过所述记录的执行上下文调用所述第二函数的步骤。
4.根据权利要求3所述的网页脚本语言的执行方法,其特征在于,还包括 当执行到所述网页脚本语言主函数中的第一函数时,从所述网页脚本语言主函数中获取时间参数,并传入所述第一函数中作为设定时间。
5.根据权利要求I所述的网页脚本语言的执行方法,其特征在于,所述第一函数为睡眠函数。
6.一种网页脚本语言的执行装置,其特征在于,包括 主函数执行模块,用于执行网页脚本语言主函数; 标记获取模块,用于当执行到所述网页脚本语言主函数中的第一函数时,获取设置于所述第一函数中的标记; 函数构造模块,用于根据所述标记之后的代码构造第二函数; 第二函数执行模块,用于在达到设定时间后执行所述第二函数。
7.根据权利要求6所述的网页脚本语言的执行装置,其特征在于,还包括 记录模块,用于记录所述网页脚本语言主函数的执行上下文; 所述第二函数执行模块包括 第二函数调用单元,用于在达到设定时间后通过所述记录的执行上下文调用所述第二函数; 执行单元,用于执行所述第二函数。
8.根据权利要求7所述的网页脚本语言的执行装置,其特征在于,所述第二函数执行模块还包括 定时器单元,用于判断是否达到设定时间,若是,则通知所述第二函数调用单元。
9.根据权利要求8所述的网页脚本语言的执行装置,其特征在于,还包括 参数传递模块,用于当执行到所述网页脚本语言主函数中的第一函数时,从所述网页脚本语言主函数中获取时间参数,并传入所述第一函数中作为设定时间。
10.根据权利要求6所述的网页脚本语言的执行装置,其特征在于,所述第一函数为睡眠函数。
全文摘要
一种网页脚本语言的执行方法,包括如下步骤执行网页脚本语言主函数;当执行到所述网页脚本语言主函数中的第一函数时,获取设置于所述第一函数中的标记;根据所述标记之后的代码构造第二函数;在达到设定时间后执行所述第二函数。上述网页脚本语言的执行方法及装置在网页脚本语言主函数的执行过程中调用第一函数,并通过第一函数将网页脚本语言主函数中还未执行的代码构造成第二函数,进而使得网页脚本语言主函数中还未执行的代码暂停执行,待达到设定时间后通过第二函数执行网页脚本语言主函数中还未执行的代码,灵活地实现了网页脚本语言中的暂停执行,并且不会破坏原有代码的结构,易于控制网页脚本语言中的整个执行过程。
文档编号G06F9/44GK102981812SQ201110264110
公开日2013年3月20日 申请日期2011年9月7日 优先权日2011年9月7日
发明者陈界 申请人:深圳市金蝶中间件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1