- 发布:2020-11-12 11:33
- 更新:2021-11-05 13:31
- 阅读:1783
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: win10
HBuilderX类型: 正式
HBuilderX版本号: 2.9.3
手机系统: 全部
手机厂商: 苹果
页面类型: vue
打包方式: 云端
项目创建方式: HBuilderX
测试过的手机:
示例代码:
//get请求
get(url, params, loadingText, isQueryString, isbg) {
return new Promise( (resolve, reject) => {
//加载中效果
if (loadingText) {
uni.showLoading({
title: loadingText,
mask: true
})
}
url = getQueryUrl(url, params, isQueryString);
url = encodeURI(url);
// console.log('检测当前网络是否超时', res.isConnected)
let header = getHeader();
uni.request({
url: url,
data: params || {},
method: 'GET',
header: header,
success(res) {
loadingText && uni.hideLoading();
res.success = checkResult(res, isbg);
resolve(res);
},
fail: (err) => {
console.log(err)
err.success = false
if (err.errMsg.indexOf('timeout') !== -1 || err.errMsg.indexOf('超时') !== -1){
loadingText && uni.hideLoading();
uni.showToast({
title: '请求超时,请稍后再试~',
icon: 'none',
duration: 2000
})
resolve(err)
return
}
uni.getNetworkType({
success: (res) => {
console.log('判断当前是否有网络', res.networkType === 'none')
console.log('判断当前是否有网络', !res.networkType)
if (res.networkType === 'none' || !res.networkType) {
uni.hideToast()
uni.hideLoading()
uni.showToast({
title: '当前网络不可用,请检查你的网络~',
icon: 'none',
duration: 2000
})
resolve(err)
return
}
loadingText && uni.hideLoading();
uni.showToast({
title: '当前网络不稳定,请5分钟后再试!',
icon: 'none',
duration: 2000
})
console.log(url || '', err);
resolve(err)
},
});
}
})
})
},
//get请求
get(url, params, loadingText, isQueryString, isbg) {
return new Promise( (resolve, reject) => {
//加载中效果
if (loadingText) {
uni.showLoading({
title: loadingText,
mask: true
})
}
url = getQueryUrl(url, params, isQueryString);
url = encodeURI(url);
// console.log('检测当前网络是否超时', res.isConnected)
let header = getHeader();
uni.request({
url: url,
data: params || {},
method: 'GET',
header: header,
success(res) {
loadingText && uni.hideLoading();
res.success = checkResult(res, isbg);
resolve(res);
},
fail: (err) => {
console.log(err)
err.success = false
if (err.errMsg.indexOf('timeout') !== -1 || err.errMsg.indexOf('超时') !== -1){
loadingText && uni.hideLoading();
uni.showToast({
title: '请求超时,请稍后再试~',
icon: 'none',
duration: 2000
})
resolve(err)
return
}
uni.getNetworkType({
success: (res) => {
console.log('判断当前是否有网络', res.networkType === 'none')
console.log('判断当前是否有网络', !res.networkType)
if (res.networkType === 'none' || !res.networkType) {
uni.hideToast()
uni.hideLoading()
uni.showToast({
title: '当前网络不可用,请检查你的网络~',
icon: 'none',
duration: 2000
})
resolve(err)
return
}
loadingText && uni.hideLoading();
uni.showToast({
title: '当前网络不稳定,请5分钟后再试!',
icon: 'none',
duration: 2000
})
console.log(url || '', err);
resolve(err)
},
});
}
})
})
},
操作步骤:
长时间不打开app 10小时左右再次打开后会出现请求超时的问题,同等网络环境 其他app 无问题
长时间不打开app 10小时左右再次打开后会出现请求超时的问题,同等网络环境 其他app 无问题
预期结果:
无论何时打开app请求正常
无论何时打开app请求正常
实际结果:
长时间不打开 会出现再次打开请求超时问题.
长时间不打开 会出现再次打开请求超时问题.
bug描述:
在 iphone12 和 一些安卓手机上会出现 长时间不打开app 再次打开后会出现请求超时的问题,目前估计的这时间大概是12小时左右,
比如当我网上8点打开app时, 网络正常, 关闭app,第二天早上再次打开时 就会出现这个请求超时的问题, 后台也无法收到请求,切换网络或重新推出后请求正常,
iphone出现的次数多一点,几乎是每次都出现, 安卓目前次数相对较少.
现在我只能在超时的时候提示用户超时了,但是在相同的网络环境下 其他的app 是正常的,这表示网络是没问题的
希望官网能解决下
- 请问你们有其他app吗?这些app有没有问题
- 如果头一天晚上完全关闭,过了你说的那个时间,再次打开,是否还要问题
- 您说重新安装没事,那么在打开前清空缓存是否还有这个问题
- 出现问题时,使用的是wifi还是数据流量?这个是否有影响
-
d***@yunfanda.com (作者)
- 我们这边暂时没有其他的app,
- 头一天晚上关闭app, 早上打开就会出现这个问题, 这个时间是不确定 预估是10小时,因为这个问题一般出现在早上第一次打开和 晚上6点左右的时候,所以我是预估的时间,
- 因为问题是随机性 我不能判断每次打开后是否会出现这个情况,所以无法验证 清除缓存是否对这个会有影响否,
- 出现问题时大部分是是有的WiFi , 出现问题切换到浏览后 就可以了, 是有流量打开是暂时没出现过这个问题的,
还有就是刚刚我联机调试的时候发现有一个请求 报了 request:fail abort statusCode:-1","success":false 这个错误 我现在在确定是否是这个报错引起的问题
2020-11-13 11:54
d***@yunfanda.com (作者)
可能是我表述没清楚, 其他app是指 列如微信 微博等其他的app,
卸载重装每次是没什么问题的,请求都很快,
因为这个问题的随机性比较高, 找不到必定触发的条件,所以我们每次都是多台机器 打开app随机抓包测试, 看是否每次请求是否触发,还是请求超时.
现在只能是说更新hx版本 看是否还会这样,看到底是代码问题还是uni-app官方这边的问题,
等有了结论我会在回来发布的.
2020-11-13 10:31
DCloud_UNI_LXH
回复 d***@yunfanda.com: 请问,当前app是在头一天晚上结束,还是挂后台了?然后第二天出现网络请求的问题
2020-11-13 11:22
d***@yunfanda.com (作者)
回复 DCloud_UNI_LXH: APP是在头一天晚上结束的 完全关闭的情况下再次打开会出现
2020-11-13 11:27