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

龙岗网站制作设计全网营销推广平台

龙岗网站制作设计,全网营销推广平台,成人用品网站建设,商丘做网站汉狮网络前言 最近开发过程中,总是遇到想把正在请求的axios接口取消,这种情况有很多应用场景,举几个例子: 弹窗中接口请求返回图片,用于前端展示,接口还没返回数据,此时关闭弹窗,需要中断接…

前言

最近开发过程中,总是遇到想把正在请求的axios接口取消,这种情况有很多应用场景,举几个例子:

  1. 弹窗中接口请求返回图片,用于前端展示,接口还没返回数据,此时关闭弹窗,需要中断接口请求
  2. tab标签页根据后端返回数据,依次渲染,频繁切换标签,需要中断接口请求
  3. for循环中请求接口,遇到跳出循环情况,也需要中断接口请求
  4. 跳转路由,离开页面时,可能也需要中断接口请求

下面就是根据以上问题,找到的解决方案

正文

因为axios不同版本取消请求是不同的,目前最新的 axios 的取消请求api,推荐使用 AbortController ,旧版本的 CancelToken 在 v0.22.0 后弃用,截止到此片文章发表,npm上的axios版本号已经更新到v1.5.1,但是相信有一些项目的版本还是v0.x.x的,所以下面分别介绍两种取消方式,大家根据自己项目axios版本号,自行查看

在这里插入图片描述

v0.22.0 CancelToken

  1. get请求
<el-button type="primary" @click="sendGet()">发送get请求</el-button>
<el-button type="danger" @click="cancel()">取消请求</el-button>import {ref,onMounted,onUnmounted} from 'vue'
import axios from "axios";let source:any = null;
const sendGet = ()=>{//可以理解为给定每个接口一个标识source = axios.CancelToken.source();axios.get('请求url',{cancelToken: source.token}).then(res => {console.log("get请求",res)}).catch(err => {if (axios.isCancel(err)) {console.log('请求取消', err);} else {console.log('其他错误', err)}});
}const cancel = ()=>{source && source.cancel('手动调用 source.cancel方法,手动取消请求');
}

在这里插入图片描述

  1. post请求
<el-button type="success" @click="sendPost()">发送post请求</el-button>
<el-button type="danger" @click="cancel()">取消请求</el-button>import {ref,onMounted,onUnmounted} from 'vue'
import axios from "axios";let source:any = null;
const sendPost = ()=>{source = axios.CancelToken.source();axios.post("请求url",{},//传参,没有也必须加上{}{cancelToken: source.token}).then((res) => {console.log("post请求",res)}).catch(err => {if (axios.isCancel(err)) {console.log('请求取消', err);} else {console.log('其他错误', err)}})
}const cancel = ()=>{source && source.cancel('手动调用 source.cancel方法,手动取消请求');
}

在这里插入图片描述

v1.5.1 AbortController

使用fetch() 是一个全局方法,它的请求是基于 Promise 的
method - 请求方法,默认GET
signal - 用于取消 fetch

<el-button type="primary" @click="sendNewGet()">发送get请求</el-button>
<el-button type="danger" @click="cancelController()">取消新版请求</el-button>import {ref,onMounted,onUnmounted} from 'vue'
import axios from "axios";let controller:any = null;const sendNewGet = ()=>{controller = new AbortController();   // 新建一个AbortController实例fetch('请求url',{signal: controller.signal    // signal是AbortController实例的属性}).then(res => {console.log("新版get请求",res)//处理返回数据res.json().then(res1 => {console.log(res1)})}).catch(err => {console.log(err)});
}const cancelController = ()=>{controller && controller.abort();//调用abort方法
}
http://www.zhongyajixie.com/news/13860.html

相关文章:

  • 中山市建设局投诉网站网站联盟广告
  • 做网站做百度竞价赚钱360免费建站网页链接
  • 自己建的网站如何百度搜索如何修改百度上面的门店号码
  • 凡科做的网站可以优化百度平台app
  • 怎样能创建一个网站厦门百度推广开户
  • 什么是电子商务网站推广百度seo优化服务
  • 苹果CMS如何做视频网站泉州搜索推广
  • wordpress设置文章固定标题朝阳区seo技术
  • 手机付费咨询网站建设什么软件可以发布广告信息
  • 做外贸网站赚钱吗武汉seo排名
  • 怎么做网盘网站免费打广告平台有哪些
  • asp网站建设代码网站模板平台资源
  • 手机网站源码asp宁德网站建设制作
  • 1000学习做网站贵吗淘宝指数转换
  • 竞猜网站开发常用seo站长工具
  • 上色的网站下载免费怎样开网站
  • 武汉外贸建站腾讯域名
  • 泉州外贸网站开发公司重庆网站排名推广
  • 做金融的喜欢逛哪些网站免费b站推广网站入口202
  • 南昌网站开发最新国际新闻50条简短
  • 知名做网站费用搜索引擎优化指的是什么
  • 济南网站设计价格百度游戏排行榜
  • 怎么开通自己的微信小程序标题优化怎样选关键词
  • 网站系统平台建设近期的新闻热点
  • framework7做网站零基础学seo要多久
  • sns社交网站 有哪些免费宣传平台
  • 做网站不难吧网络推广怎么收费
  • 服饰工厂网站建设百度搜索推广开户
  • 网站开发前端学习做神马seo快速排名软件
  • 电脑网页视频怎么下载广州seo优化排名公司