基于JavaScript可指定并发数的并发请求处理方法及系统与流程

文档序号:26277529发布日期:2021-08-13 19:33阅读:201来源:国知局
基于JavaScript可指定并发数的并发请求处理方法及系统与流程

本发明涉及web应用开发领域,具体涉及基于javascript可指定并发数的并发请求处理方法及系统。



背景技术:

目前在web应用开发领域,主要采用前后端分离开发模式进行开发,前端开发利用ajax技术向服务端发起http请求,获取数据,更新页面内容。在实际开发中,往往一个web页面中会有很多http请求,一部分会在web页面初始化加载的时候完成,一部分是在用户操作点击以后完成,而每一个http请求完成都会消耗一些时间。

在一些特殊情况下,一个web页面在初始化或者用户操作以后同一时间需要同时发起10个100个……甚至更多的http请求,在现有的不同版本web浏览器中,一个web页面中浏览器同时可以并发的http请求数最多不超过10个,超过并发请求峰值,浏览器性能就会下降web页面就会卡顿,所以在这种特殊情况下,开发人员就需要对其做特殊处理,避免浏览器卡顿,web页面加载缓慢,用户操作反馈不流畅,甚至页面卡死,用户体验不友好问题。

目前浏览器端针对于多并发请求的处理方案主要有以下两种:

1)回调计数

定义一个函数a,函数a内部定义计数变量n,每执行一次a,则n的值+1(n=n+1),假设有10个并发ajaxhttp请求,在每一个ajaxhttp请求完成的回调中,执行函数a,当n=10的时候,说明10个请求已经全部完成,就可以进行后续业务操作。

此方案存在的不足:此方案虽然可以明确知道多并发请求全部完成的时间点,一方面,不能进行并发请求数的限制,另一方面,也需要在每一个ajaxhttp请求完成的回调中调用函数a,对于业务代码就会有一定侵入性,导致很强的耦合性,不利于后续维护,如果并发请求数多于浏览器并发请求峰值,还是会导致web页面加载缓慢,用户操作反馈不流畅等问题。

2)循环非阻塞

定义一个计数变量n,定义一个函数a,假设有10个并发ajaxhttp请求,在每一个ajaxhttp请求完成的回调中执行n+1,函数a内部执行定时器,定时器内部每隔一定周期时间判断n的值,如果n=10则,并发请求全部完成,否则未全部完成。

此方案存在的不足:与1)回调计数方案存在同样的问题,一方面,不能进行并发请求数限制;一方面,由于定时器需要一定周期执行一次,所以导致不能准确获取所有请求的完成时间点;另一方面,在每一个ajaxhttp请求完成的回调中执行n+1,对于业务代码就会有一定侵入性,导致很强的耦合性。



技术实现要素:

本发明提供基于javascript可指定并发数的并发请求处理方法及系统,一方面,能够解决在浏览器内多并发http请求,超过浏览器http请求并发峰值,不能指定并发数,导致web页面加载缓慢,用户操作不流畅,浏览器卡顿等问题;另一方面,能够解决现有技术方案1和方案2ajaxhttp请求侵入无关业务逻辑代码,导致业务代码耦合性,不利于维护问题。

本发明解决上述技术问题的技术方案如下:

根据本发明实施例的第一方面,提供基于javascript可指定并发数的并发请求处理方法,包括:

s1、获取并发请求的所有请求url地址并存储在数组中;

s2、响应于所有并发http请求的个数大于0,从所述数组中取出一个url地址,并根据所述url地址进行http请求;

s3、循环执行上述步骤s2,直至当已完成的http请求的个数达到所述所有并发http请求的个数时,执行callback回调函数。

在上述技术方案的基础上,本发明还可以做如下改进。

进一步,所述方法还包括:

当步骤s2的循环次数大于或者等于预先指定的http请求的最大限制并发数,即所有http请求完成时,结束循环。

进一步,在结束循环之后,所述方法还包括:

获取所有http请求完成的时间点。

根据本发明实施例的第二方面,提供基于javascript可指定并发数的并发请求处理系统,包括:

地址获取及存储模块,用于获取并发请求的所有请求url地址并存储在数组中;

http请求模块,用于响应于所有并发http请求的个数大于0,从所述数组中取出一个url地址,并根据所述url地址进行http请求;

函数执行模块,用于所述http请求模块循环执行,直至当已完成的http请求的个数达到所述所有并发http请求的个数时,执行callback回调函数。

进一步,该系统还包括:

循环计数模块,用于当所述http请求模块的循环次数大于或者等于预先指定的http请求的最大限制并发数,即所有http请求完成时,结束循环。

进一步,该系统还包括:

时间点获取模块,用于在所述循环计数模块结束循环之后,获取所有http请求完成的时间点。

根据本发明实施例的第三方面,提供一种终端设备,包括:

处理器;以及

存储器,其上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如上所述的方法。

根据本发明实施例的第四方面,提供一种非暂时性机器可读存储介质,其上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如上所述的方法。

本发明的有益效果是:

在页面加载或者用户操作以后,可以指定浏览器并发请求数,不会对ajaxhttp请求侵入无关业务逻辑代码,并且可以准确获取所有并发请求完成时间点,进行后续业务处理,这样就能好合理高效利用浏览器性能,完成页面渲染,避免页面加载缓慢,用户操作反馈不流畅,卡顿的问题。

附图说明

图1为本发明实施例提供的基于javascript可指定并发数的并发请求处理方法的流程图;

图2为本发明实施例提供的整体函数包含关系及执行示意图;

图3为本发明实施例提供的函数fnhandler的逻辑示意图;

图4为本发明实施例提供的函数fnhandler的逻辑示意图;

图5为本发明实施例提供的整体函数包含关系及执行示意流程图;

图6是本发明实施例提供的基于javascript可指定并发数的并发请求处理系统的结构框图;

图7是根据本发明一示例性实施例示出的一种计算设备的结构示意图。

具体实施方式

下面将参照附图更详细地描述本发明的优选实施方式。虽然附图中显示了本发明的优选实施方式,然而应该理解,可以以各种形式实现本发明而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本发明更加透彻和完整,并且能够将本发明的范围完整地传达给本领域的技术人员。

在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本发明可能采用术语“第一”、“第二”、“第三”等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。

以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。

为便于读者理解,首先对以下内容中涉及的技术术语作出如下说明:

javascript:一种浏览器端的编程脚本语言;

web:网页;

ajax:在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术;

api:预先定义的函数,软件系统不同组成部分衔接的约定;

http请求:指从客户端到服务器端的请求消息;

函数:是被设计为执行特定任务的代码块;

定时器:按照指定的周期(以毫秒计)来调用函数或计算表达式;

并发请求:同一时间段内,程序执行的所有http请求;

for循环:多次遍历使用遍历数据项执行代码块;

递归:一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法;

url:请求资源的地址或者网站地址,在www上,每一信息资源都有统一的且在网上唯一的地址,该地址就叫url(uniformresourcelocator,统一资源定位器),它是www的统一资源定位标志,就是指网络地址。

图1为本发明实施例提供的基于javascript可指定并发数的并发请求处理方法的流程图,如图1所示,该方法包括:

s1、获取并发请求的所有请求url地址并存储在数组中;

s2、响应于所有并发http请求的个数大于0,从所述数组中取出一个url地址,并根据所述url地址进行http请求;

s3、循环执行上述步骤s2,直至当已完成的http请求的个数达到所述所有并发http请求的个数时,执行callback回调函数;

s4、当步骤s2的循环次数大于或者等于预先指定的http请求的最大限制并发数,即所有http请求完成时,结束循环;

s5、获取所有http请求完成的时间点。

具体的,本发明实施例技术方案的设计原理为:定义一个函数控制递归http请求,一个for循环控制并发数。

方案实施步骤如下:

1)定义一个http并发处理函数fnbingfa;接收三个参数(所有请求的url数组,最大限制并发数max,所有请求完成以后执行的回调函数)

2)获取并发请求的所有请求url地址,将其存储在数组urls中;

3)定义一个最大限制并发数变量max;

4)定义一个变量num,用于记录已完成的http请求个数

5)定义一个变量total,指所有并发http请求的个数(total=urls.length)

6)定义一个函数fnhttp,用于发送http请求,参数是任意一个请求url;

7)定义一个函数callback,用于所有并发请求完成以后,执行需要的业务逻辑;

8)在函数fnbingfa内部定义一个函数fnhandler,控制递归http请求;

9)在函数fnbingfa内部定义一个循环,最大循环次数不能超过变量max,在循环内部执行函数fnhandler

整体函数包含关系及执行示意图如图2所示。

技术方案的技术点如下:

1)函数fnhandler的实现:

如果urls.length(所有请求的url数)大于0的时候,就从urls中取出一个url,将其传入fnhttp(url)中,进行http请求,此时urls的个数减1,在fnhttp完成的回调函数中执行num+1和递归执行fnhandler(),在fnhttp执行之后通过条件判断,如果num大于等于total的时候,即所有urls请求完成,执行callback函数。在执行过程中,递归保证了同时会有max个http并发请求在执行状态,通过num的值大于等于total,可以准确获取,全部请求完成时间点,执行callback,函数fnhandler的逻辑如图3所示。

2)循环内执行函数fnhandler的逻辑:

循环次数不能大于指定的并发请求数max,控制并发数,函数fnhandler的逻辑如图4所示。

根据图3和图4所示的函数逻辑,方案的整体函数包含关系及执行示意流程图如图5所示。

本发明技术方案的有益效果如下:

1)本方案基于javascript在浏览器端实现了可指定并发数的并发请求处理优化方案,可以同时保证指定数量的http请求在执行状态,合理利用浏览器性能,避免在并发请求太多的实际业务情况下,导致浏览器web页面加载缓慢,用户操作反馈延时,不流畅等问题;

2)在不增加业务代码耦合性的情况下,可以准确获取所有并发请求完成的时间点,进行后续业务逻辑处理。

本发明的技术关键点在于,可以根据实际业务情况指定在同一时间内http请求的并发数,可以准确获取所有请求完成的时间点,进行后续业务逻辑处理。

图6是本发明实施例提供的基于javascript可指定并发数的并发请求处理系统的结构框图,如图6所示,该系统包括:

地址获取及存储模块,用于获取并发请求的所有请求url地址并存储在数组中;

http请求模块,用于响应于所有并发http请求的个数大于0,从所述数组中取出一个url地址,并根据所述url地址进行http请求;

函数执行模块,用于所述http请求模块循环执行,直至当已完成的http请求的个数达到所述所有并发http请求的个数时,执行callback回调函数。

可选地,在该实施例中,如图6所示,该系统还包括:

循环计数模块,用于当所述http请求模块的循环次数大于或者等于预先指定的http请求的最大限制并发数,即所有http请求完成时,结束循环。

可选地,在该实施例中,如图6所示,该系统还包括:

时间点获取模块,用于在所述循环计数模块结束循环之后,获取所有http请求完成的时间点。

具体的,本发明实施例技术方案的设计原理为:定义一个函数控制递归http请求,一个for循环控制并发数。

方案实施步骤如下:

1)定义一个http并发处理函数fnbingfa;接收三个参数(所有请求的url数组,最大限制并发数max,所有请求完成以后执行的回调函数)

2)获取并发请求的所有请求url地址,将其存储在数组urls中;

3)定义一个最大限制并发数变量max;

4)定义一个变量num,用于记录已完成的http请求个数

5)定义一个变量total,指所有并发http请求的个数(total=urls.length)

6)定义一个函数fnhttp,用于发送http请求,参数是任意一个请求url;

7)定义一个函数callback,用于所有并发请求完成以后,执行需要的业务逻辑;

8)在函数fnbingfa内部定义一个函数fnhandler,控制递归http请求;

9)在函数fnbingfa内部定义一个循环,最大循环次数不能超过变量max,在循环内部执行函数fnhandler

整体函数包含关系及执行示意图如图2所示。

技术方案的技术点如下:

1)函数fnhandler的实现:

如果urls.length(所有请求的url数)大于0的时候,就从urls中取出一个url,将其传入fnhttp(url)中,进行http请求,此时urls的个数减1,在fnhttp完成的回调函数中执行num+1和递归执行fnhandler(),在fnhttp执行之后通过条件判断,如果num大于等于total的时候,即所有urls请求完成,执行callback函数。在执行过程中,递归保证了同时会有max个http并发请求在执行状态,通过num的值大于等于total,可以准确获取,全部请求完成时间点,执行callback,函数fnhandler的逻辑如图3所示。

2)循环内执行函数fnhandler的逻辑:

循环次数不能大于指定的并发请求数max,控制并发数,函数fnhandler的逻辑如图4所示。

根据图3和图4所示的函数逻辑,方案的整体函数包含关系及执行示意流程图如图5所示。

本发明技术方案的有益效果如下:

1)本方案基于javascript在浏览器端实现了可指定并发数的并发请求处理优化方案,可以同时保证指定数量的http请求在执行状态,合理利用浏览器性能,避免在并发请求太多的实际业务情况下,导致浏览器web页面加载缓慢,用户操作反馈延时,不流畅等问题;

2)在不增加业务代码耦合性的情况下,可以准确获取所有并发请求完成的时间点,进行后续业务逻辑处理。

本发明的技术关键点在于,可以根据实际业务情况指定在同一时间内http请求的并发数,可以准确获取所有请求完成的时间点,进行后续业务逻辑处理。

图7是根据本发明一示例性实施例示出的一种计算设备的结构示意图。

参见图7,计算设备700包括存储器710和处理器720。

处理器720可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

存储器710可以包括各种类型的存储单元,例如系统内存、只读存储器(rom),和永久存储装置。其中,rom可以存储处理器720或者计算机的其他模块需要的静态数据或者指令。永久存储装置可以是可读写的存储装置。永久存储装置可以是即使计算机断电后也不会失去存储的指令和数据的非易失性存储设备。在一些实施方式中,永久性存储装置采用大容量存储装置(例如磁或光盘、闪存)作为永久存储装置。另外一些实施方式中,永久性存储装置可以是可移除的存储设备(例如软盘、光驱)。系统内存可以是可读写存储设备或者易失性可读写存储设备,例如动态随机访问内存。系统内存可以存储一些或者所有处理器在运行时需要的指令和数据。此外,存储器710可以包括任意计算机可读存储媒介的组合,包括各种类型的半导体存储芯片(dram,sram,sdram,闪存,可编程只读存储器),磁盘和/或光盘也可以采用。在一些实施方式中,存储器710可以包括可读和/或写的可移除的存储设备,例如激光唱片(cd)、只读数字多功能光盘(例如dvd-rom,双层dvd-rom)、只读蓝光光盘、超密度光盘、闪存卡(例如sd卡、minsd卡、micro-sd卡等等)、磁性软盘等等。计算机可读存储媒介不包含载波和通过无线或有线传输的瞬间电子信号。

存储器710上存储有可执行代码,当可执行代码被处理器720处理时,可以使处理器720执行上文述及的方法中的部分或全部。

上文中已经参考附图详细描述了本发明的方案。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。本领域技术人员也应该知悉,说明书中所涉及的动作和模块并不一定是本发明所必须的。另外,可以理解,本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减,本发明实施例装置中的模块可以根据实际需要进行合并、划分和删减。

此外,根据本发明的方法还可以实现为一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括用于执行本发明的上述方法中部分或全部步骤的计算机程序代码指令。

或者,本发明还可以实施为一种非暂时性机器可读存储介质(或计算机可读存储介质、或机器可读存储介质),其上存储有可执行代码(或计算机程序、或计算机指令代码),当所述可执行代码(或计算机程序、或计算机指令代码)被电子设备(或计算设备、服务器等)的处理器执行时,使所述处理器执行根据本发明的上述方法的各个步骤的部分或全部。

本领域技术人员还将明白的是,结合这里的发明所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。

附图中的流程图和框图显示了根据本发明的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1