CN106528257A - 一种简化和限制并发ajax请求的方法 - Google Patents
一种简化和限制并发ajax请求的方法 Download PDFInfo
- Publication number
- CN106528257A CN106528257A CN201610927108.4A CN201610927108A CN106528257A CN 106528257 A CN106528257 A CN 106528257A CN 201610927108 A CN201610927108 A CN 201610927108A CN 106528257 A CN106528257 A CN 106528257A
- Authority
- CN
- China
- Prior art keywords
- ajax
- request
- requests
- queue
- concurrent
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 40
- 230000008569 process Effects 0.000 claims description 15
- 238000001514 detection method Methods 0.000 claims description 2
- 238000007689 inspection Methods 0.000 claims 1
- 230000007246 mechanism Effects 0.000 abstract description 2
- 241000208340 Araliaceae Species 0.000 description 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 1
- 235000003140 Panax quinquefolius Nutrition 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 235000008434 ginseng Nutrition 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及Web程序开发技术领域,尤其是一种简化和限制并发ajax请求的方法。本发是将并发的ajax请求转化成先进先出的队列形式,并且每个请求都设置唯一的id;一次从队列中取出n个ajax请求并执行,每个ajax请求执行完毕后执行队列中对应的方法;缓存当前的ajax请求的状态和数据;取出的n个ajax请求执行完毕后则继续取出执行n个ajax请求,直至所有的ajax请求执行完毕并执行总回调。本发明解决了并发ajax请求中存在的缺乏限制机制、需要编写回调方式等问题;特别适合构建富用户体现的web程序。
Description
技术领域
本发明涉及Web程序开发技术领域,尤其是一种简化和限制并发ajax请求的方法。
背景技术
近几年随着前端技术的发展和程序的用户体现的重视,传统的B/S开发模式难以满足互联网的发展需求,开发者越来越多使用javascript来构建复杂的富用户体现的web程序,而javascript与服务器的交互最重要的方法是ajax,复杂的项目中经常遇到并发的ajax请求情况。
常规的ajax请求方式存在以下问题:
1.缺乏一种限制并发ajax请求的机制,往往需要开发者自行开发。
2.处理存在依赖关系的ajax请求,往往需要编写复杂且难以维护的嵌套回调方式来实现。
发明内容
本发明解决的技术问题在于提供一种简化和限制并发ajax请求的方法;用于简化和限制并发的ajax请求,并能简单管理ajax依赖关系,能够限制并发ajax请求的数量以减轻服务器的压力。
本发明解决上述技术问题的技术方案是:
所述的方法是将并发的ajax请求转化成先进先出的队列形式,并且每个请求都设置唯一的id;一次从队列中取出n个ajax请求并执行,每个ajax请求执行完毕后执行队列中对应的方法;缓存当前的ajax请求的状态和数据;取出的n个ajax请求执行完毕后则继续取出执行n个ajax请求,直至所有的ajax请求执行完毕并执行总回调。
所述方法的具体流程如下:
第一步,将并发的ajax请求处理成队列的形式,并设置每次执行的请求数量n和等待时间t;
第二步,从队列头部取出n个ajax请求的参数,并遍历并做如下处理:
(1)、将请求的参数和默认参数合并,在传递给后端的参数中增加ajax-id参数并立刻发起一个ajax请求,并根据设定的ajax-id值缓存每个ajax请求的参数;
(2)、服务端处理ajax请求,并在返回的数据中增加从ajax请求获取的ajax-id;
(3)、无论success或error,ajax请求完成后执行回调;根据ajax-id从缓存中取出ajax请求的参数,若存在相应的回调则执行;同样根据ajax-id来缓存当前请求的状态和返回数据,检查取出ajax请求是否执行完毕;否则等待队列的其他请求再次触发回调检测,直至取出的ajax请求都执行完毕;
第三步,取出的ajax请求都执行完毕后重新取出,如设置有等待时间则等待设定的时间后重新取出;重复第二步直至ajax请求队列均完成执行并触发总回调,其中总回调可以访问所有ajax请求的执行状态和返回数据。
所述的ajax队列形式如下:
参数全貌如下:
本发明的ajax请求的底层采用jQuery库提供的ajax请求,单个的ajax请求的可用参数跟jQuery几乎一致,上面只列出几个常用的参数,更多的参数可以参考jQuery库的$.ajax方法。
本发明为开发者提供更加简单高效的ajax请求控制方式,开发者仅仅需要传入ajax参数队列和设置其他参数,所有的ajax请求便能有序地执行,对于存在依赖关系的ajax请求,仅仅需要合理调整他们在队列中的位置,在ajax参数队列中便能轻松处理,无需编写复杂的难以维护的嵌套回调。
附图说明
下面结合附图对本发明进一步说明:
图1是本发明详细流程。
具体实施方式
如图1所示,本发明现使用5个并发的ajax请求(其中队列中的第三个请求依赖于第一、二个请求)来详细阐述实施方式:
第一步,整理ajax请求队列和参数,参数如下:
使用上述参数config调用本发明封装的函数(兼容AMD、commonJS、var等引入方式,以最简单的var方式来说明)rbAjax(config)。
第二步,使用config调用内部_dequeue的方法,流程如下:
(1)使用config.queue.splice(0,config.limit)抽取队列前2个ajax请求的参数。
(2)遍历抽取的ajax参数,执行如下逻辑:传入的参数跟默认的参数合并得到最终参数缓存一份后去除非$.ajax使用的参数,在ajax传递给服务端的数据中增加ajax-id,也就是当前ajax的id值。检测当前ajax请求依赖的ajax请求是否成功执行:
如果检测到所依赖的任意ajax失败或错误,则直接设置当前ajax请求为失败状态并检测抽取的ajax是否均执行完毕;反之则发起ajax请求。
第三步,服务端响应ajax请求,需在返回的数据中增加一个从ajax请求中获取的ajax-id。
第四步,ajax处理服务端返回的数据,根据返回的ajax-id从缓存中取出当前ajax请求的参数,存在三种情况:
(1)设置依赖和处理函数:从队列处理状态对象中取出当前依赖的返回数据,将本次返回的数据和依赖的返回数据一起传给处理函数。
(2)只处理函数:将本次返回的数据传给处理函数。
(3)没有依赖和处理函数:不作任何处理。
无论ajax请求成功与否,均缓存当前请求的状态和返回数据,并检测取出的所有请求是否执行完毕,未完成则在下一次ajax请求中再次检测,直至取出的ajax请求均处理完毕,等待设定的时间,再次取出2个ajax请求:
window.setTimeout(function(){
_dequeue(config);
},config.wait*1000);
再次重复步骤二、三、四直至ajax请求队列中所有的队列处理完毕。第五步,设置了finish回调,则执行回调并传入所有请求的状态和数据:
if(config.queue.length==0&&config.finish){config.finish(json);}。
Claims (5)
1.一种简化和限制并发ajax请求的方法,其特征在于:所述的方法是将并发的ajax请求转化成先进先出的队列形式,并且每个请求都设置唯一的id;一次从队列中取出n个ajax请求并执行,每个ajax请求执行完毕后执行队列中对应的方法;缓存当前的ajax请求的状态和数据;取出的n个ajax请求执行完毕后则继续取出执行n个ajax请求,直至所有的ajax请求执行完毕并执行总回调。
2.根据权利要求1所述的简化和限制并发ajax请求的方法,其特征在于:所述方法的具体流程如下:
第一步,将并发的ajax请求处理成队列的形式,并设置每次执行的请求数量n和等待时间t;
第二步,从队列头部取出n个ajax请求的参数,并遍历并做如下处理:
(1)、将请求的参数和默认参数合并,在传递给后端的参数中增加ajax-id参数并立刻发起一个ajax请求,并根据设定的ajax-id值缓存每个ajax请求的参数;
(2)、服务端处理ajax请求,并在返回的数据中增加从ajax请求获取的ajax-id;
(3)、无论success或error,ajax请求完成后执行回调;根据ajax-id从缓存中取出ajax请求的参数,若存在相应的回调则执行;同样根据ajax-id来缓存当前请求的状态和返回数据,检查取出ajax请求是否执行完毕;否则等待队列的其他请求再次触发回调检测,直至取出的ajax请求都执行完毕;
第三步,取出的ajax请求都执行完毕后重新取出,如设置有等待时间则等待设定的时间后重新取出;重复第二步直至ajax请求队列均完成执行并触发总回调,其中总回调可以访问所有ajax请求的执行状态和返回数据。
3.根据权利要求1或2所述的简化和限制并发ajax请求的方法,其特征在于:所述的ajax队列形式如下:
4.根据权利要求1或2所述的简化和限制并发ajax请求的方法,其特征在于:参数全貌如下:
5.根据权利要求3所述的简化和限制并发ajax请求的方法,其特征在于:参数全貌如下:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610927108.4A CN106528257B (zh) | 2016-10-31 | 2016-10-31 | 一种简化和限制并发ajax请求的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610927108.4A CN106528257B (zh) | 2016-10-31 | 2016-10-31 | 一种简化和限制并发ajax请求的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106528257A true CN106528257A (zh) | 2017-03-22 |
CN106528257B CN106528257B (zh) | 2019-08-30 |
Family
ID=58292054
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610927108.4A Active CN106528257B (zh) | 2016-10-31 | 2016-10-31 | 一种简化和限制并发ajax请求的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106528257B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109445795A (zh) * | 2018-09-14 | 2019-03-08 | 厦门天锐科技股份有限公司 | 多次异步调用同一数据请求时回调函数中的数据处理方法 |
CN110598155A (zh) * | 2019-09-17 | 2019-12-20 | 北京锐安科技有限公司 | 一种Ajax请求调用方法、装置、计算机设备及存储介质 |
CN111294377A (zh) * | 2018-12-10 | 2020-06-16 | 武汉斗鱼网络科技有限公司 | 一种依赖关系的网络请求发送方法、终端装置及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102170400A (zh) * | 2010-07-22 | 2011-08-31 | 杨喆 | 一种防止Web网站访问拥塞的方法 |
-
2016
- 2016-10-31 CN CN201610927108.4A patent/CN106528257B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102170400A (zh) * | 2010-07-22 | 2011-08-31 | 杨喆 | 一种防止Web网站访问拥塞的方法 |
Non-Patent Citations (2)
Title |
---|
SAM XIAO: ""ajax并发问题"", 《博客园》 * |
风灵使: ""AJAX 请求队列实现"", 《CSDN博客》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109445795A (zh) * | 2018-09-14 | 2019-03-08 | 厦门天锐科技股份有限公司 | 多次异步调用同一数据请求时回调函数中的数据处理方法 |
CN111294377A (zh) * | 2018-12-10 | 2020-06-16 | 武汉斗鱼网络科技有限公司 | 一种依赖关系的网络请求发送方法、终端装置及存储介质 |
CN111294377B (zh) * | 2018-12-10 | 2023-07-04 | 深圳市联瑞电子有限公司 | 一种依赖关系的网络请求发送方法、终端装置及存储介质 |
CN110598155A (zh) * | 2019-09-17 | 2019-12-20 | 北京锐安科技有限公司 | 一种Ajax请求调用方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106528257B (zh) | 2019-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106528257A (zh) | 一种简化和限制并发ajax请求的方法 | |
EP3550429B1 (en) | Instruction generation process multiplexing method and device | |
CN106462395B (zh) | 多线程处理器架构中的线程等待 | |
CN105893120B (zh) | 一种线程同步资源的获取方法和装置 | |
CN104199730B (zh) | 一种基于同步i/o复用机制的单线程多任务处理方法 | |
JP2011501323A5 (zh) | ||
US20120198454A1 (en) | Adaptive spinning of computer program threads acquiring locks on resource objects by selective sampling of the locks | |
KR20170102726A (ko) | 이종 컴퓨팅 방법 | |
CN106997394B (zh) | 一种数据乱序到达处理方法和系统 | |
CN108829740A (zh) | 数据存储方法和装置 | |
WO2020211372A1 (zh) | 数据的缓存方法、装置、计算机设备 | |
Hruby et al. | On Sockets and System Calls: Minimizing Context Switches for the Socket {API} | |
CN110489242B (zh) | 分布式数据计算方法、装置、终端设备及存储介质 | |
US20210240547A1 (en) | Method, apparatus, and electronic device for improving cpu performance | |
US9582340B2 (en) | File lock | |
CN101710341B (zh) | 一种透明、通用的文件缓存系统 | |
US20170302558A1 (en) | Measuring apparatus, measuring system, measuring method, and recording medium in which program is recorded | |
CN107368498A (zh) | 优化MySQL悲观锁的锁等待超时时间的方法及装置 | |
US8762953B2 (en) | Exception-based error handling in an array-based language | |
JP5300005B2 (ja) | スレッド実行制御方法、およびシステム | |
TWI353138B (en) | A job management and a scheduling method of networ | |
EP2875428B1 (fr) | Procede de gestion des fils d'execution dans une unite informatique et unite informatique agencee pour la mise en oeuvre de ce procede | |
US9396044B2 (en) | Memory efficient thread-level speculation | |
CN106598687A (zh) | 一种脚本预热方法和装置 | |
WO2021114549A1 (zh) | 一种指令执行方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 523808 19th Floor, Cloud Computing Center, Chinese Academy of Sciences, No. 1 Kehui Road, Songshan Lake Hi-tech Industrial Development Zone, Dongguan City, Guangdong Province Applicant after: G-Cloud Technology Co., Ltd. Address before: 523808 Guangdong province Dongguan City Songshan Lake Science and Technology Industrial Park Building No. 14 Keyuan pine Applicant before: G-Cloud Technology Co., Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |