当前位置:首页 > 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'
      })
    }
  }
})

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

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

uniapp旋转横屏

uniapp旋转横屏

实现横屏模式的方法 在UniApp中实现横屏模式,可以通过配置页面方向或使用CSS旋转实现。以下是两种常见方法: 修改manifest.json配置 在项目的manifest.json文件中,找到…

uniapp前端页面

uniapp前端页面

Uniapp 前端页面开发指南 Uniapp 是一个基于 Vue.js 的跨平台开发框架,支持一次开发,多端部署(H5、小程序、App等)。以下是开发 Uniapp 前端页面的关键方法和注意事项。…

uniapp判断手机定位是否开启

uniapp判断手机定位是否开启

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

uniapp特性

uniapp特性

uniapp的核心特性 跨平台开发 uniapp支持一套代码编译到多个平台,包括iOS、Android、H5、微信小程序、支付宝小程序、百度小程序、字节跳动小程序等。开发者无需为不同平台单独编写代码。…

uniapp adb

uniapp adb

在UniApp中使用ADB的方法 ADB(Android Debug Bridge)是Android开发中常用的调试工具,可用于UniApp项目的真机调试、日志查看等操作。以下是具体使用方法: 连接…