用户登录
用户注册

分享至

利用js实现Ajax并发请求限制请求数量的示例代码

  • 作者: n薋-堏
  • 来源: 51数据库
  • 2021-10-19

出现问题描述:当不确定异步请求个数时,为防止当一瞬间发生上百个http请求时,导致堆积了无数调用栈进而导致内存溢出问题。

要求:将同一时刻并发请求数量控制在3个以内,同时还要尽可能快速的拿到响应的结果。

同面试问题:

实现一个批量请求函数 multirequest(urls, maxnum),要求如下:

  • 要求最大并发数 maxnum
  • 每当有一个请求返回,就留下一个空位,可以增加新的请求
  • 所有请求完成后,结果按照 urls 里面的顺序依次打出

1、基于promise.all实现ajax的串行和并行

平时都是基于promise来封装异步请求的

串行:一个异步请求完成了之后再进行下一个请求

并行:多个异步请求同时进行

示例:串行

 并行:

promise.all保证数组中所有promise对象都达到resolve状态,才执行then回调

promise.all并发限制

含义: 指每个时刻并发执行的promise数量是固定的,最终执行的结果还是保持与原来的promise.all一致。

思路与实现

采用递归调用来实现,设置最大请求数量上限。并在这些请求中的每一个都应该在完成时继续递归发送,通过传入的索引来确定了urls里面具体是那个url,保证最后输出的顺序不会乱,而是依次输出

代码实现:

代码实现:

到此这篇关于利用js实现ajax并发请求限制请求数量的示例代码的文章就介绍到这了,更多相关js ajax并发请求限制内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

软件
前端设计
程序设计
Java相关