CN106528257A - 一种简化和限制并发ajax请求的方法 - Google Patents

一种简化和限制并发ajax请求的方法 Download PDF

Info

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
Application number
CN201610927108.4A
Other languages
English (en)
Other versions
CN106528257B (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.)
G Cloud Technology Co Ltd
Original Assignee
G Cloud 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 G Cloud Technology Co Ltd filed Critical G Cloud Technology Co Ltd
Priority to CN201610927108.4A priority Critical patent/CN106528257B/zh
Publication of CN106528257A publication Critical patent/CN106528257A/zh
Application granted granted Critical
Publication of CN106528257B publication Critical patent/CN106528257B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering 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

一种简化和限制并发ajax请求的方法
技术领域
本发明涉及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请求的方法,其特征在于:参数全貌如下:
CN201610927108.4A 2016-10-31 2016-10-31 一种简化和限制并发ajax请求的方法 Active CN106528257B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102170400A (zh) * 2010-07-22 2011-08-31 杨喆 一种防止Web网站访问拥塞的方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102170400A (zh) * 2010-07-22 2011-08-31 杨喆 一种防止Web网站访问拥塞的方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
SAM XIAO: ""ajax并发问题"", 《博客园》 *
风灵使: ""AJAX 请求队列实现"", 《CSDN博客》 *

Cited By (4)

* Cited by examiner, † Cited by third party
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请求的方法
CN106462395B (zh) 多线程处理器架构中的线程等待
CN106030546B (zh) 计算机程序的方法
US9342274B2 (en) Dynamic code generation and memory management for component object model data constructs
CN105893120B (zh) 一种线程同步资源的获取方法和装置
US8621464B2 (en) Adaptive spinning of computer program threads acquiring locks on resource objects by selective sampling of the locks
CN104199730B (zh) 一种基于同步i/o复用机制的单线程多任务处理方法
EP3312722A1 (en) Data processing apparatus, method, and program
CN107710200A (zh) 用于并行化smp数据库中的基于散列的运算符的系统和方法
JP2011501323A5 (zh)
US10423600B2 (en) Low latency query processing over a series of redo records
US20120266182A1 (en) System and method for thread protected testing
CN104714839B (zh) 一种控制进程生命期的方法和装置
CN108829740A (zh) 数据存储方法和装置
CN110489242B (zh) 分布式数据计算方法、装置、终端设备及存储介质
CN107704568B (zh) 一种测试数据添加的方法及装置
US11269693B2 (en) Method, apparatus, and electronic device for improving CPU performance
US9582340B2 (en) File lock
CN103218219A (zh) 紧凑函数跟踪
EP3217288A1 (fr) Instruction atomique de portée locale limitée à un niveau de cache intermédiaire
CN107368498A (zh) 优化MySQL悲观锁的锁等待超时时间的方法及装置
US9354890B1 (en) Call stack structure for enabling execution of code outside of a subroutine and between call stack frames
US20130179864A1 (en) Deadlock free synchronization synthesizer for must-happen-before relations in parallel programs and method thereof
TWI353138B (en) A job management and a scheduling method of networ
WO2009009090A1 (en) Exception-based error handling in an array-based language

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