当前位置: 首页 > news >正文

全县网站建设情况通报深圳惠州网站建设公司

全县网站建设情况通报,深圳惠州网站建设公司,仿百度文库网站源码商业版dedecms(梦织)系统内核,域名购买平台哪个好前言: 我们日常开发中,经常会遇到点击一个按钮或者进行搜索时,请求接口的需求。 如果我们不做优化,连续点击按钮或者进行搜索,接口会重复请求。 以axios为例,我们一般以以下几种方法为主: 1…

前言:

我们日常开发中,经常会遇到点击一个按钮或者进行搜索时,请求接口的需求。

如果我们不做优化,连续点击按钮或者进行搜索,接口会重复请求。

以axios为例,我们一般以以下几种方法为主:

1.使用防抖、节流函数限制请求操作(老传统,但是已经不是最佳实践了)

2.自定义节流阀(比如自定义一个字段loading,请求前值是true,请求后改为false。如果为值true,就终止往下请求,体验感很不友好,因为我们搜索的时候,会经常更换文字,所以上一个请求没结束,下个就没法请求。不推荐)

const getList = () => {if(loading.value) returnloading.value = trueaxios.get('/user/12345').then(res=> {loading.value = fasle})
}

3.使用axios请求库提供的api来解决重复请求的问题, AbortController或者CancelToken

Tips:有些请求库已经内置了这一功能,比如alova.js,有些之前同事的公司已经在运用,听说效果很不错,也很轻便,不需要配置便能过滤重复请求。但是目前我们大部分公司还是以axios为主的,所以我们下面主要分享下在axios里怎么完成这一功能。( 对alova感兴趣的伙伴,可以移步至官网了解下Alova.JS - 轻量级请求策略库 | Alova.JS)

AbortController

从v0.22.0开始,`Axios`支持`AbortController`以获取API的方式取消请求。具体如下:

const controller = new AbortController();axios.get('/foo/bar', {signal: controller.signal
}).then(function(response) {//...
});
// 取消请求
controller.abort()

示例:

<template><div><button @click="fetchData">请求</button></div>
</template><script setup>
import { ref } from 'vue';
import axios from 'axios';let controller = null;function fetchData() {if (controller) {controller.abort();controller = null;}controller = new AbortController();axios.get('https://api/user/12345',{signal: controller.signal})  //.then(response => {...})
}</script>

效果如下图:可以看到,重复的请求会直接被终止掉!

 axios.CancelToken 

deprecated

此 API 从 v0.22.0 开始已被弃用,不应在新项目中使用。

CancelToken官网示例

官网使用方法传送门:取消请求 | Axios中文文档 | Axios中文网

const CancelToken = axios.CancelToken;
const source = CancelToken.source();axios.get('/user/12345', {cancelToken: source.token
}).catch(function (thrown) {if (axios.isCancel(thrown)) {console.log('Request canceled', thrown.message);} else {// 处理错误}
});axios.post('/user/12345', {name: 'new name'
}, {cancelToken: source.token
})// 取消请求(message 参数是可选的)
source.cancel('Operation canceled by the user.');

示例:

<template><div><button @click="fetchData">请求</button></div>
</template><script setup>
import { ref } from 'vue';
import axios from 'axios';let cancelTokenSource = null;function fetchData() {if (cancelTokenSource) {cancelTokenSource.cancel('Operation canceled by the user.');cancelTokenSource = null;}cancelTokenSource = axios.CancelToken.source();axios.get('http://api/uesr/12345',{cancelToken: cancelTokenSource.token})  //.then(response => {...})
}</script>

兼容

注意: 可以使用同一个 cancel token 或 signal 取消多个请求。

在过渡期间,您可以使用这两种取消 API,即使是针对同一个请求

const controller = new AbortController();const CancelToken = axios.CancelToken;
const source = CancelToken.source();axios.get('/user/12345', {cancelToken: source.token,signal: controller.signal
}).catch(function (thrown) {if (axios.isCancel(thrown)) {console.log('Request canceled', thrown.message);} else {// 处理错误}
});axios.post('/user/12345', {name: 'new name'
}, {cancelToken: source.token
})// 取消请求 (message 参数是可选的)
source.cancel('Operation canceled by the user.');
// 或
controller.abort(); // 不支持 message 参数
http://www.yayakq.cn/news/530044/

相关文章:

  • 化妆品网站优势鄱阳有做百度网站的
  • 做定制网站怎么样装修公司企业网站开发规划
  • 网站建设与管理期末考试贵州水电建设局网站
  • 网站婚礼服务态网站建设论文手机免费制作网站模板免费下载
  • 证券公司网站建设方案seo营销网站
  • 快速wordpress 建网站做免费导航网站
  • 公司做网站济南如何避免网站被耍流量
  • 网站设计设计目的微网站建设服务商
  • 服务器和网站的关系wordpress如何播放m3u8的视频
  • 北京网站建设过程渭南经开区
  • 德州住房和城乡建设局网站江苏省张家港保税区建设厅网站
  • 网站开发大体流程图全面的苏州网站建设
  • 免费网站服务器定制礼品的网站有哪些
  • 销量不高的网站怎么做自己建一个网站需要什么
  • wordpress可爱主题优化大师官方
  • 东莞网站平台费用wordpress登录后搜索
  • 搜维斯网站建设做华为网站的还有哪些功能吗
  • 甘肃兰州网站建设wordpress 学院 模板
  • 做唯品客网站的感想唐山哪里建设飞机场
  • wordpress如何修改背景图片湘潭专业sem优化
  • 怎么做网站的营销wix怎样做网站
  • 高级网站开发技术使用什么语言全球新冠最新数据报告
  • 网站开发哪种语言更安全网上购物软件
  • 比较好的建站系统wordpress 配置邮箱
  • 如何利用影视网站做cpa模板和网站的区别
  • 青岛外贸网站建设费用wordpress免费搭建博客
  • 建设银行普卡申请网站青岛城运控股集团
  • 免费做网站收录的教务管理系统哪个好
  • 做网站架构需要什么工具旅游景区网站建设的必要性
  • 在iis里面创建网站steam账号注册网站