当前位置:首页 > uni-app

uniapp请求超时处理

2026-02-05 16:43:35uni-app

请求超时处理的常见方法

在UniApp中处理请求超时问题,可以通过以下几种方式实现:

设置全局请求超时时间main.js中配置全局请求超时时间,适用于所有使用uni.request发起的请求:

uni.$http.setConfig((config) => {
  config.timeout = 10000 // 10秒超时
  return config
})

单个请求设置超时时间 针对特定请求单独设置超时时间:

uni.request({
  url: 'https://example.com/api',
  timeout: 5000, // 5秒超时
  success: (res) => {},
  fail: (err) => {}
})

使用Promise封装超时处理 结合Promise实现更灵活的超时控制:

function requestWithTimeout(url, data, timeout = 8000) {
  return new Promise((resolve, reject) => {
    const timer = setTimeout(() => {
      reject(new Error('请求超时'))
    }, timeout)

    uni.request({
      url,
      data,
      success: (res) => {
        clearTimeout(timer)
        resolve(res.data)
      },
      fail: (err) => {
        clearTimeout(timer)
        reject(err)
      }
    })
  })
}

拦截器处理超时错误 通过拦截器统一处理超时错误:

uni.addInterceptor('request', {
  fail(err) {
    if (err.errMsg.includes('timeout')) {
      uni.showToast({
        title: '网络请求超时',
        icon: 'none'
      })
    }
  }
})

重试机制实现 对于重要请求可添加重试逻辑:

uniapp请求超时处理

async function requestWithRetry(url, retryCount = 2) {
  try {
    return await requestWithTimeout(url)
  } catch (error) {
    if (retryCount > 0 && error.message.includes('timeout')) {
      return requestWithRetry(url, retryCount - 1)
    }
    throw error
  }
}

注意事项

网络状态检测应在发起请求前进行,可使用uni.getNetworkType检查网络状况。超时时间设置需根据实际网络环境和接口响应时间合理调整,通常建议8-15秒范围。对于大文件上传等特殊场景,需要适当延长超时时间或使用分片上传策略。

标签: uniapp
分享给朋友:

相关文章

uniapp教程

uniapp教程

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

uniapp倒计时

uniapp倒计时

uniapp倒计时的实现方法 在uniapp中实现倒计时功能可以通过多种方式完成,以下是几种常见的实现方法: 使用setInterval实现基础倒计时 通过JavaScript的setInterva…

uniapp开发电视应用

uniapp开发电视应用

开发环境准备 确保已安装HBuilderX最新版本,这是uniapp官方推荐的开发工具。安装Node.js环境,用于依赖管理和打包构建。准备Android Studio或Xcode用于调试和打包TV应…

uniapp组件

uniapp组件

uniapp组件基础概念 uniapp的组件系统基于Vue.js,支持跨平台开发(H5、小程序、App等)。组件分为内置基础组件(如<view>、<button>)和自定义组件…

uniapp实现懒加载

uniapp实现懒加载

uniapp实现懒加载的方法 在uniapp中实现懒加载可以通过多种方式,以下是几种常见的方法: 使用uni.lazyLoad组件 uniapp提供了内置的懒加载组件,适用于图片等资源的懒加载。在页…

uniapp改变checkbox选中状态

uniapp改变checkbox选中状态

修改 checkbox 选中状态的方法 在 uniapp 中修改 checkbox 的选中状态可以通过以下几种方式实现: 绑定 v-model 控制状态 通过数据绑定方式控制 checkbox 的…