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

58网站怎么做品牌推广网站打不开了怎么办

58网站怎么做品牌推广,网站打不开了怎么办,怎样做自己的摄影网站,怎么查看网站是哪个公司建的在 Vue 3 中,除了使用自定义的 useRequest 钩子函数外,还可以通过 axios 的拦截器 或 axios-retry 插件实现接口请求失败后的重试逻辑。以下是两种具体方案的实现方式: 方案一:使用 axios 拦截器实现重试 实现步骤: 通…

        在 Vue 3 中,除了使用自定义的 useRequest 钩子函数外,还可以通过 axios 的拦截器 axios-retry 插件实现接口请求失败后的重试逻辑。以下是两种具体方案的实现方式:

方案一:使用 axios 拦截器实现重试

       实现步骤: 通过 axios 的响应拦截器捕获错误,并在拦截器内部实现重试逻辑。

        1、配置 axios 实例:在 Vue 项目的入口文件(如 main.js)中配置 axios。

        2、添加响应拦截器:在拦截器中捕获错误,并根据条件进行重试。

        3、递归重试:在拦截器中控制重试次数和延迟。

// main.js 或单独的 axios 配置文件
import axios from 'axios';// 配置 axios 实例
const axiosInstance = axios.create({baseURL: '/api', // 根路径timeout: 10000, // 超时时间
});// 响应拦截器:处理错误并重试
axiosInstance.interceptors.response.use((response) => response, // 成功响应直接返回async (error) => {const config = error.config;const status = error.response?.status;const maxRetries = 5; // 最大重试次数const retryDelay = 1000; // 重试间隔(毫秒)// 如果没有重试次数或达到最大次数,直接抛出错误if (!config || !config._retryCount) {config._retryCount = 0;}if (config._retryCount >= maxRetries) {return Promise.reject(error);}// 增加重试次数config._retryCount += 1;// 只对特定状态码(如 408、5xx)重试if ([408, 500, 502, 503, 504].includes(status) ||(status === 401 && config.url.includes('/refresh-token')) // 示例:401 时重试刷新 token) {// 等待一段时间后重试await new Promise((resolve) => setTimeout(resolve, retryDelay * config._retryCount));// 重新发送请求return axiosInstance(config);}// 其他错误直接抛出return Promise.reject(error);}
);// 导出配置好的 axios 实例
export default axiosInstance;

使用示例(在 Vue 组件中)

<template><div><button @click="fetchData">获取数据</button><div v-if="loading">加载中...</div><div v-else-if="data">数据:{{ data }}</div><div v-else-if="error">错误:{{ error.message }}</div></div>
</template><script setup>
import axiosInstance from '@/utils/axios'; // 导入配置好的 axios 实例
import { ref } from 'vue';const loading = ref(false);
const data = ref(null);
const error = ref(null);const fetchData = async () => {try {loading.value = true;const response = await axiosInstance.get('/data');data.value = response.data;error.value = null;} catch (err) {error.value = err;} finally {loading.value = false;}
};
</script>

        1、拦截器全局生效:所有通过 axiosInstance 发起的请求都会经过拦截器,自动处理重试逻辑。可通过配置 config 参数(如 config._retryCount)控制重试次数。

        2、重试条件:根据 HTTP 状态码(如 408、5xx)决定是否重试。可扩展为根据业务逻辑(如 token 过期后刷新)触发重试。

        3、递归重试:通过 axiosInstance(config) 重新发送请求,递归调用拦截器。需要手动维护 config._retryCount 来计数。

方案二:使用 axios-retry 插件

        通过 axios-retry 插件快速实现重试逻辑,无需手动编写递归逻辑。

        1、安装插件

npm install axios-retry

        2、配置 axios 实例

// main.js 或单独的 axios 配置文件
import axios from 'axios';
import axiosRetry from 'axios-retry';const axiosInstance = axios.create({baseURL: '/api',timeout: 10000,
});// 配置重试策略
axiosRetry(axiosInstance, {retries: 5, // 最大重试次数retryDelay: (retryCount) => {return retryCount * 1000; // 指数退避:1s、2s、3s...},retryCondition: (error) => {// 自定义重试条件(如针对特定状态码)if (error.response) {return [408, 500, 502, 503, 504].includes(error.response.status);}return axiosRetry.isNetworkError(error); // 网络错误自动重试},
});export default axiosInstance;

        3、使用示例(与方案一相同)

<template><!-- 同上 -->
</template><script setup>
import axiosInstance from '@/utils/axios'; // 已配置重试的 axios 实例
// 同上
</script>

关键点说明

        1、插件优势:开箱即用,代码简洁。支持自定义重试条件、延迟策略(如指数退避)。

内置对网络错误(如超时)的自动重试。

        2、灵活性:可通过 retryCondition 函数灵活控制重试条件。支持 retryDelay 函数实现动态延迟(如指数退避)。


对比与选择

方案优点缺点
拦截器手动实现完全自定义逻辑,无依赖代码冗余,需手动维护计数器
axios-retry 插件简单易用,开箱即用需引入第三方依赖

注意事项

        1、避免无限循环:必须设置最大重试次数(如 maxRetries 或 retries 参数)。确保重试条件不会无限触发(如 401 未授权 需结合 token 刷新逻辑)。

        2、错误类型区分:对于 4xx 客户端错误(如 400、401、403),通常不建议重试,需业务逻辑处理(如跳转登录页)。对 5xx 服务端错误(如 500、503)或网络错误(如超时),可安全重试。

        3、性能优化:使用 指数退避(如 retryDelay: (count) => Math.pow(2, count) * 1000)减少并发重试的压力。结合 限流(如 maxRetries 与 retryDelay 组合)避免频繁请求。


文章转载自:

http://uXmDymCV.tnkwj.cn
http://edfyRe37.tnkwj.cn
http://VfnqtVmJ.tnkwj.cn
http://KM6JQWx8.tnkwj.cn
http://HIZKPImX.tnkwj.cn
http://2Igy5Qgr.tnkwj.cn
http://X7jR5GBg.tnkwj.cn
http://V5HKBJ2m.tnkwj.cn
http://jKEssb6a.tnkwj.cn
http://svjHrsUl.tnkwj.cn
http://DDITt8Kt.tnkwj.cn
http://rE9cutXI.tnkwj.cn
http://ob346V6m.tnkwj.cn
http://MZK5fKJS.tnkwj.cn
http://0Thnh8gU.tnkwj.cn
http://vbUhX0Az.tnkwj.cn
http://JDR6bgxN.tnkwj.cn
http://ylAtmX79.tnkwj.cn
http://Twr2fbFP.tnkwj.cn
http://Ie0km78w.tnkwj.cn
http://rcLCjdWX.tnkwj.cn
http://rt4GCixV.tnkwj.cn
http://epzgT9Oo.tnkwj.cn
http://R0BO0f7J.tnkwj.cn
http://eNABkeds.tnkwj.cn
http://0H67UBC9.tnkwj.cn
http://34XnbCFw.tnkwj.cn
http://X2xjMmyc.tnkwj.cn
http://S8ojiz3y.tnkwj.cn
http://AHG2xXxR.tnkwj.cn
http://www.dtcms.com/wzjs/704922.html

相关文章:

  • 哪些企业网站做的比较好微官网制作平台有哪些
  • 网站广告怎么做wordpress免费交易主题
  • 珠海知名网站常平建设局网站
  • 优质的seo网站排名优化软件wordpress手机编辑
  • 如何在交易网站做电子印章国内最好的危机公关公司
  • 建设银行网站登录公司网站建设技术方案
  • 网站建设要花钱吗宁波网站建设服务商
  • 网站开发专业都有哪些课程wordpress目录权限设置
  • 手机商城网站制作公司网站怎么做内链外链
  • 镇江网站建设网站百度竞价排名背后的伦理问题
  • 诚聘网站开发人员专业建设网站公司
  • 苏州建站网站免费建站系统软件
  • 哈尔滨精品建站湖南建设银行宣传部网站
  • 一个企业网站文章多少适合公司制做网站
  • 网站推广含义致力于网站开发维护学什么专业
  • 印后设备网站建设网站代理软件
  • 两个彩票网站做赔付网站开发流程的三个部分
  • 加强文明网站建设诊所网站模板
  • 机关网站建设总结wordpress搭建实时聊天网站
  • net 网站开发室内设计方案ppt作业
  • 做紧固件上什么网站哪有免费的网站建设模板
  • 做商城网站公司吗为什么菜市场不可以做网站
  • 音乐网站开发背景深圳网站建设服务公司
  • 办网站流程wordpress首页添加图片不显示图片
  • 营销型网站建设的一般过程包括哪些环节?淄博手机网站开发公司
  • 网站开发招标评分标准找工程项目上哪个平台好呢
  • wordpress建站简单吗wordpress怎么完成
  • 网站建设后台有哪些项目产品宣传册模板免费
  • 做的比较好看的国内网站网站建设费应计入什么科目
  • 怎么用wordpress建电商网站上海网页制作费用