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

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

Info

Publication number
CN106528257B
CN106528257B CN201610927108.4A CN201610927108A CN106528257B CN 106528257 B CN106528257 B CN 106528257B CN 201610927108 A CN201610927108 A CN 201610927108A CN 106528257 B CN106528257 B CN 106528257B
Authority
CN
China
Prior art keywords
ajax
request
queue
ajax request
parameter
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.)
Active
Application number
CN201610927108.4A
Other languages
English (en)
Other versions
CN106528257A (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 (1)

1.一种简化和限制并发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请求的执行状态和返回数据。
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 CN106528257A (zh) 2017-03-22
CN106528257B true 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)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109445795A (zh) * 2018-09-14 2019-03-08 厦门天锐科技股份有限公司 多次异步调用同一数据请求时回调函数中的数据处理方法
CN111294377B (zh) * 2018-12-10 2023-07-04 深圳市联瑞电子有限公司 一种依赖关系的网络请求发送方法、终端装置及存储介质
CN110598155A (zh) * 2019-09-17 2019-12-20 北京锐安科技有限公司 一种Ajax请求调用方法、装置、计算机设备及存储介质

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
"AJAX 请求队列实现";风灵使;《CSDN博客》;20160922;1-9
"ajax并发问题";Sam Xiao;《博客园》;20090926;1-4

Also Published As

Publication number Publication date
CN106528257A (zh) 2017-03-22

Similar Documents

Publication Publication Date Title
CN106528257B (zh) 一种简化和限制并发ajax请求的方法
US10776170B2 (en) Software service execution apparatus, system, and method
US10445427B2 (en) Semantic parsing with knowledge-based editor for execution of operations
WO2021011287A1 (en) Techniques for identifying skin color in images having uncontrolled lighting conditions
JP6356273B2 (ja) バッチ最適化レンダリング及びフェッチアーキテクチャ
US8996465B2 (en) Replicating data to a database
JP5379711B2 (ja) データ構造に対し並列に実行される複数の動作を含む、実行履歴の正しさを検証するためのコンピュータ実装方法、システム及びコンピュータ・プログラム
US20210004277A1 (en) Cross-cloud orchestration of data analytics for a plurality of research domains
CN106030546B (zh) 计算机程序的方法
US20130086102A1 (en) Asynchronous Communication in Web Applications
US20160034433A1 (en) Digital document change conflict resolution
KR102224759B1 (ko) 컴퓨터 애플리케이션에 대한 언어 번역 현지화를 위한 기법
DE112011100258T5 (de) Durchführen von aggressiven Codeoptimierungen mit einer Fähigkeit zum Annulieren derdurch die aggressiven Optimierungen vorgenommenen Änderungen
US20120297360A1 (en) Dynamic code generation and memory management for component object model data constructs
DE102012210420A1 (de) Verfahren für ein systemeigenes Programm für das Übernehmen desselben Transaktionskontextes, wenn durch das in einer separaten Umgebung laufende primäre Programm aufgerufen
US10545801B2 (en) Implementing multiple content management service operations
US20190155523A1 (en) Efficient Volume Replication In A Storage System
US20160224281A1 (en) Methods and System for Printing Device Service Restart
US20210334113A1 (en) Method and device for lazy loading of js scripts
JP6568985B2 (ja) バッチ最適化レンダリング及びフェッチアーキテクチャ
Hesselink Mechanical verification of Lamport’s bakery algorithm
US9354890B1 (en) Call stack structure for enabling execution of code outside of a subroutine and between call stack frames
EP3559832A1 (en) Technologies for scaling user interface backend clusters for database-bound applications
CN106598687A (zh) 一种脚本预热方法和装置
Bui et al. Fast distributed evaluation of stateful attribute-based access control policies

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