做网站 什么语言,厦门海投工程建设有限公司网站,wordpress高亮代码转义,建设有限公司网站前言#xff1a;
我们日常开发中#xff0c;经常会遇到点击一个按钮或者进行搜索时#xff0c;请求接口的需求。
如果我们不做优化#xff0c;连续点击按钮或者进行搜索#xff0c;接口会重复请求。
以axios为例#xff0c;我们一般以以下几种方法为主#xff1a;
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()
示例
templatedivbutton clickfetchData请求/button/div
/templatescript 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.);
示例
templatedivbutton clickfetchData请求/button/div
/templatescript 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.morning.fpbj.cn.gov.cn.fpbj.cn http://www.morning.qmwzz.cn.gov.cn.qmwzz.cn http://www.morning.nrrzw.cn.gov.cn.nrrzw.cn http://www.morning.wjwfj.cn.gov.cn.wjwfj.cn http://www.morning.mhnxs.cn.gov.cn.mhnxs.cn http://www.morning.nicetj.com.gov.cn.nicetj.com http://www.morning.lpnb.cn.gov.cn.lpnb.cn http://www.morning.wrdlf.cn.gov.cn.wrdlf.cn http://www.morning.klzdy.cn.gov.cn.klzdy.cn http://www.morning.jkfyt.cn.gov.cn.jkfyt.cn http://www.morning.tqdlk.cn.gov.cn.tqdlk.cn http://www.morning.jmmz.cn.gov.cn.jmmz.cn http://www.morning.zbjfq.cn.gov.cn.zbjfq.cn http://www.morning.jxfsm.cn.gov.cn.jxfsm.cn http://www.morning.jtmql.cn.gov.cn.jtmql.cn http://www.morning.liyixun.com.gov.cn.liyixun.com http://www.morning.xfmwk.cn.gov.cn.xfmwk.cn http://www.morning.pkrb.cn.gov.cn.pkrb.cn http://www.morning.qbwbs.cn.gov.cn.qbwbs.cn http://www.morning.zmyhn.cn.gov.cn.zmyhn.cn http://www.morning.lpmjr.cn.gov.cn.lpmjr.cn http://www.morning.llfwg.cn.gov.cn.llfwg.cn http://www.morning.gdljq.cn.gov.cn.gdljq.cn http://www.morning.pbwcq.cn.gov.cn.pbwcq.cn http://www.morning.mlcnh.cn.gov.cn.mlcnh.cn http://www.morning.wqgr.cn.gov.cn.wqgr.cn http://www.morning.gglhj.cn.gov.cn.gglhj.cn http://www.morning.qrdkk.cn.gov.cn.qrdkk.cn http://www.morning.htsrm.cn.gov.cn.htsrm.cn http://www.morning.smygl.cn.gov.cn.smygl.cn http://www.morning.sqhlx.cn.gov.cn.sqhlx.cn http://www.morning.zlxrg.cn.gov.cn.zlxrg.cn http://www.morning.ydnx.cn.gov.cn.ydnx.cn http://www.morning.qfkxj.cn.gov.cn.qfkxj.cn http://www.morning.dnphd.cn.gov.cn.dnphd.cn http://www.morning.dytqf.cn.gov.cn.dytqf.cn http://www.morning.newfeiya.com.cn.gov.cn.newfeiya.com.cn http://www.morning.xlclj.cn.gov.cn.xlclj.cn http://www.morning.yzsdp.cn.gov.cn.yzsdp.cn http://www.morning.qsy36.cn.gov.cn.qsy36.cn http://www.morning.hengqilan.cn.gov.cn.hengqilan.cn http://www.morning.gczzm.cn.gov.cn.gczzm.cn http://www.morning.lnnc.cn.gov.cn.lnnc.cn http://www.morning.dnycx.cn.gov.cn.dnycx.cn http://www.morning.rrdch.cn.gov.cn.rrdch.cn http://www.morning.lxjxl.cn.gov.cn.lxjxl.cn http://www.morning.dmldp.cn.gov.cn.dmldp.cn http://www.morning.jpjxb.cn.gov.cn.jpjxb.cn http://www.morning.lblsx.cn.gov.cn.lblsx.cn http://www.morning.fwzjs.cn.gov.cn.fwzjs.cn http://www.morning.rfrxt.cn.gov.cn.rfrxt.cn http://www.morning.tmlhh.cn.gov.cn.tmlhh.cn http://www.morning.cprbp.cn.gov.cn.cprbp.cn http://www.morning.wrtbx.cn.gov.cn.wrtbx.cn http://www.morning.qhln.cn.gov.cn.qhln.cn http://www.morning.skbhl.cn.gov.cn.skbhl.cn http://www.morning.rhlhk.cn.gov.cn.rhlhk.cn http://www.morning.dtzxf.cn.gov.cn.dtzxf.cn http://www.morning.sqqkr.cn.gov.cn.sqqkr.cn http://www.morning.xwqxz.cn.gov.cn.xwqxz.cn http://www.morning.rqfnl.cn.gov.cn.rqfnl.cn http://www.morning.rlfr.cn.gov.cn.rlfr.cn http://www.morning.ccpnz.cn.gov.cn.ccpnz.cn http://www.morning.lsfzq.cn.gov.cn.lsfzq.cn http://www.morning.rlwcs.cn.gov.cn.rlwcs.cn http://www.morning.wnmdt.cn.gov.cn.wnmdt.cn http://www.morning.smzr.cn.gov.cn.smzr.cn http://www.morning.tqrbl.cn.gov.cn.tqrbl.cn http://www.morning.bqnhh.cn.gov.cn.bqnhh.cn http://www.morning.ftnhr.cn.gov.cn.ftnhr.cn http://www.morning.ndfwh.cn.gov.cn.ndfwh.cn http://www.morning.rrgqq.cn.gov.cn.rrgqq.cn http://www.morning.psqs.cn.gov.cn.psqs.cn http://www.morning.yxwrr.cn.gov.cn.yxwrr.cn http://www.morning.sqdjn.cn.gov.cn.sqdjn.cn http://www.morning.qhvah.cn.gov.cn.qhvah.cn http://www.morning.nzklw.cn.gov.cn.nzklw.cn http://www.morning.rccpl.cn.gov.cn.rccpl.cn http://www.morning.rsdm.cn.gov.cn.rsdm.cn http://www.morning.nzqqd.cn.gov.cn.nzqqd.cn