首页 > 编程语言 >【javascript】关于 AbortController

【javascript】关于 AbortController

时间:2023-08-09 14:44:06浏览次数:47  
标签:Web 请求 abortController 取消 javascript AbortController 关于 response

相关概念:https://developer.mozilla.org/zh-CN/docs/Web/API/AbortController

需求描述:后台返回10000条图片url,前端拿到后需要做成假分页,假设1页显示20张图,分成50页。

部分逻辑:

1 for(let i=0;i<imgUrlList.length;i++){
2    let image = new Image()
3    image.src = imgUrlList[i]
4    image.onload = () =>{
5       do soming....
6    }
7 }

问题:在迅速换页的过程中,例如从第1页连续切换2、3、4到第5页,第2、3、4页的60条请求并不会被取消,这就造成了资源浪费,延迟了第5页数据加载,有没有办法取消这些来不及响应的请求呢?

答案是 AbortController,该接口表示一个控制器对象,允许你根据需要中止一个或多个 Web 请求。

 1 if (this.abortController) {
 2       // 如果存在abortController,就取消掉上次的请求,注意不同接口如果使用同一个 
 3       abortController,则会被abort() 一起取消掉
 4       this.abortController.abort()
 5       this.abortController = ""
 6 } else {
 7       this.abortController = new AbortController()
 8 }
 9 this.abortController = new AbortController()
10 
11 for(let i=0;i<imgUrlList.length;i++){
12        fetch(imgUrlList[i],{this.abortController.signal}).then(response=>{
13           return response.blob()
14         }).then(response=>{
15           const objectURL = URL.createObjectURL(response);
16            image.src = objectURL
17            image.onload=()=>{
18               do soming...
19            }
20 }

 

  

 

标签:Web,请求,abortController,取消,javascript,AbortController,关于,response
From: https://www.cnblogs.com/lishuxuan/p/17616833.html

相关文章

  • CefSharp (铬) javascript增加内存限制
    https://stackoverflow.com/questions/55099372 好了,伙计们,我已经想出了一个解决方案。当您将这些参数传递给chrome可执行文件以将javascript内存限制设置为16it时,chrome会将其设置为3.5it。--js-flags="--max_old_space_size=16384"复制似乎将内存大小设置为3.5GB以上......
  • vue import 调用方法 Import是javascript中的一种模块加载方式,在Vue中也可以使用impor
    vueimport调用方法Import是javascript中的一种模块加载方式,在Vue中也可以使用import来加载组件、库或其他模块。使用import语句,可以将需要的模块导入到当前模块的作用域中,以使其可用于当前模块内的执行。原文链接:https://www.yzktw.com.cn/post/1248672.htmlImport是javascri......
  • 关于二次型
    所谓的二次型,就是二项式,在二次型之中,分为两部分,一种是变量的二次项,一种是变量交叉相乘项。前者称之为平方项,后者称之为交叉项。只含有平方项的二次型,化成矩阵时,只有对角线上的元素不为零,其他元素均为零。含有所有变量平方项的叫做二次型的标准型,不是包括所有变量平方项称......
  • 关于硬件IIC卡死在各事件的解决方法
    1、关于硬件IIC卡死在EV5事件解决方法主机使用I2C_GenerateSTART()函数发送START条件后,主机必须等待事件5(启动条件已在I2C总线上正确释放),关于事件5,主要是对是否发送起始位(STAR1寄存器位0)、主从模式以及总线是忙还是空闲(STAR2寄存器位0、位1)进行判断,当这3位均为1,即已发送起始位、主......
  • 关于CH32F系列以及CH32V系列 SysTick的使用
    1、关于SysTickCH32F103/203:CH32F103/203SysTick和STM32F103一样为Cortex-M3内核,是一个24位的向下递减计数器,计数器每计数一次的时间为1/SYSCLK(系统主频)。当SysTick重装载数寄存器的值递减到0的时候,产生一次中断。CH32F系列MCUSysTick由4个寄存器控制,具体如下图。具体介绍可......
  • 关于菜鸡学习RHEL8的一些小笔记--->防火墙
    #如果说SELINUX是对内管控应用程序的安全,那么防火主要是对外进行管理防火墙:Linux的内核中包含了netfilter,netfilter主要是对流量操作的一个框架,其中包括数据包的过滤,网络地址转换和端口转发等;在rhel8中内核还包含nftables,这是一个较新的数据包分类和过滤的子系统,在netfilter的......
  • 关于__attribute__使用
    __attribute__配合使用参数介绍1、aligned 指定对象的对齐格式(以字节为单位),如:structS{shortb[3];}__attribute__((aligned(8)));typedefintint32_t__attribute__((aligned(8)));该声明将强制编译器确保(尽它所能)变量类型为structS 或者int32_t......
  • 关于将预留单中增强字段带入物料凭证和会计凭证中
    1.业务需求预留中自定义文本字段“大项修”。根据预留创建物料凭证时,将该字段带入到物料凭证中,类似标准字段“项目文本”。并在物料凭证自动产生会计凭证后,将该字段带入到会计凭证行项目中。其中需要解决以上三张凭证对该字段的界面显示,以及预留对该字段的维护。解决接口中用BAP......
  • 关于Tomcat返回URL出现jsessionId
    去掉java项目URL地址栏后面的";JEESESSIONID方法一:添加过滤器web.xml添加以下内容<filter><filter-name>jsessionid</filter-name><filter-class>com.myc.webpro.base.filter.DisableUrlSessionFilter</filter-class></filter><filter-......
  • 关于三次握手和四次挥手,面试官到底想听到怎样的回答?
    我一看到TCP,啪就点进来了,很快啊。  TCP报文   一个完整的TCP报文头部共有20个字节,其中包括:源端口号(16位)和目的端口号(16位):再加上ip首部的源ip地址和目的IP地址可以唯一确定一个TCP连接。数据序号(16位):表示在这个报文段中的第一个数据字节序号。确认序号:仅当......