当前位置:首页 > uni-app

uniapp请求超时处理

2026-03-04 18:22:24uni-app

uniapp请求超时处理方法

在uniapp中处理请求超时可以通过配置请求的超时时间、拦截器处理以及错误回调等方式实现。以下是一些常见的处理方法:

设置请求超时时间

在uniapp中,可以通过uni.request方法的timeout参数设置请求的超时时间(单位为毫秒)。默认情况下,超时时间为60秒。

uni.request({
  url: 'https://example.com/api',
  method: 'GET',
  timeout: 10000, // 设置超时时间为10秒
  success: (res) => {
    console.log('请求成功', res);
  },
  fail: (err) => {
    console.log('请求失败', err);
  }
});

使用拦截器处理超时

uniapp的请求拦截器可以统一处理请求超时问题。通过uni.addInterceptor方法,可以拦截请求并设置超时时间。

uni.addInterceptor('request', {
  invoke(args) {
    args.timeout = 10000; // 统一设置超时时间为10秒
  },
  fail(err) {
    if (err.errMsg.includes('timeout')) {
      console.log('请求超时');
    }
  }
});

错误回调处理超时

在请求的fail回调中,可以通过判断错误信息是否为超时错误,进行相应的处理。

uni.request({
  url: 'https://example.com/api',
  method: 'GET',
  timeout: 5000,
  success: (res) => {
    console.log('请求成功', res);
  },
  fail: (err) => {
    if (err.errMsg.includes('timeout')) {
      console.log('请求超时,请重试');
    } else {
      console.log('其他错误', err);
    }
  }
});

重试机制

对于超时请求,可以实现自动重试机制。通过递归或循环的方式,在超时后重新发起请求。

function requestWithRetry(url, retryCount = 3) {
  return new Promise((resolve, reject) => {
    const request = () => {
      uni.request({
        url: url,
        timeout: 5000,
        success: (res) => {
          resolve(res);
        },
        fail: (err) => {
          if (err.errMsg.includes('timeout') && retryCount > 0) {
            retryCount--;
            request();
          } else {
            reject(err);
          }
        }
      });
    };
    request();
  });
}

requestWithRetry('https://example.com/api').then(res => {
  console.log('请求成功', res);
}).catch(err => {
  console.log('请求失败', err);
});

全局配置

main.js中,可以通过修改uni.$http的默认配置,全局设置请求超时时间。

uniapp请求超时处理

uni.$http = {
  request(config) {
    config.timeout = config.timeout || 10000;
    return uni.request(config);
  }
};

通过以上方法,可以有效处理uniapp中的请求超时问题,提升用户体验和应用的稳定性。

标签: uniapp
分享给朋友:

相关文章

uniapp教程

uniapp教程

uniapp 基础介绍 uniapp 是一个基于 Vue.js 的跨平台开发框架,支持一次开发,多端发布(如微信小程序、H5、App、快应用等)。其核心优势在于代码复用率高,学习成本低,适合快速构建多…

uniapp应用市场

uniapp应用市场

uniapp应用市场概述 Uniapp作为跨平台开发框架,支持将代码编译到iOS、Android、Web及各类小程序平台。其应用市场(插件市场)是开发者获取扩展插件、模板、组件的重要资源库,涵盖UI组…

uniapp安装axios

uniapp安装axios

安装axios 在uniapp项目中安装axios需要确保项目支持node_modules管理。通过npm或yarn安装axios: npm install axios # 或 yarn add a…

uniapp中如何引用echarts

uniapp中如何引用echarts

在uniapp中引用echarts uniapp中引用echarts可以通过原生方式或第三方插件实现,以下是具体方法: 使用原生echarts 安装echarts依赖 在项目根目录下执行命令:…

uniapp判断手机定位是否开启

uniapp判断手机定位是否开启

判断手机定位是否开启的方法 在UniApp中判断手机定位是否开启,可以通过调用原生API或使用第三方插件实现。以下是几种常见的方法: 使用uni.getLocation检测定位状态 通过调用uni.…

uniapp擎

uniapp擎

uniapp 引擎简介 uniapp 是一个基于 Vue.js 的开发框架,允许开发者使用一套代码同时构建跨平台应用(如 iOS、Android、H5、小程序等)。其核心引擎负责将 Vue 语法转换为…