弱网环境下在uni-app中很容易出现连接服务器超时点击屏幕重试

弱网环境下在uni-app中很容易出现连接服务器超时点击屏幕重试

开发环境 版本号 项目创建方式
Windows 22621.5189 HBuilderX

操作步骤:

  • 测试时,网络调为Slow 4G,Disable cache,打开页面就会复现

预期结果:

  • 不要出现以上问题

实际结果:

  • 总是出现超时提示

bug描述:

弱网环境下,很容易出现“连接服务器超时,点击屏幕重试”。 在论坛查了一圈,没有解决。 manifest里面,添加了以下配置,仍然在10s内,就报以上提示


更多关于弱网环境下在uni-app中很容易出现连接服务器超时点击屏幕重试的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

https://ask.dcloud.net.cn/article/37065
看了这个帖子,既然问题的本质是超时,那么设置了超时时间为30s,那么就应该在30s以后提示超时呀,而不是10s左右就提示

更多关于弱网环境下在uni-app中很容易出现连接服务器超时点击屏幕重试的实战教程也可以访问 https://www.itying.com/category-93-b0.html


针对弱网环境下uni-app连接超时问题,建议从以下几个方面优化:

  1. 请求超时设置: 在manifest.json中配置网络超时时间:
{
  "networkTimeout": {
    "request": 30000,
    "connectSocket": 30000,
    "uploadFile": 60000,
    "downloadFile": 60000
  }
}
  1. 使用uni.request时自定义超时:
uni.request({
  url: 'your_api_url',
  timeout: 30000,
  // 其他配置
})
  1. 错误处理优化:
uni.request({
  url: 'your_api_url',
  success: (res) => {},
  fail: (err) => {
    if(err.errMsg.includes('timeout')) {
      // 自定义超时处理逻辑
    }
  }
})
  1. 考虑使用指数退避重试机制:
function requestWithRetry(url, retryCount = 3, delay = 1000) {
  return new Promise((resolve, reject) => {
    const doRequest = (attempt) => {
      uni.request({
        url,
        success: resolve,
        fail: (err) => {
          if(attempt < retryCount) {
            setTimeout(() => doRequest(attempt + 1), delay * Math.pow(2, attempt))
          } else {
            reject(err)
          }
        }
      })
    }
    doRequest(0)
  })
}
  1. 弱网检测与提示:
uni.onNetworkStatusChange((res) => {
  if(res.networkType === 'none' || res.networkType === 'unknown') {
    // 显示弱网提示
  }
})
回到顶部