- 发布:2023-03-08 05:06
- 更新:2023-03-10 09:32
- 阅读:952
【报Bug】uni.request 断网在启动后 报{"errMsg":"request:fail abort statusCode:-1"}
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: Windows 11
HBuilderX类型: 正式
HBuilderX版本号: 3.7.6
手机系统: 全部
页面类型: nvue
vue版本: vue2
打包方式: 云端
项目创建方式: HBuilderX
测试过的手机:
示例代码:
uni.request({
url: apiUrl, //仅为示例,并非真实接口地址。
data: data,
method: method,
header: header,
success: (apiRes) => { //成功
switch (apiRes.data.code) {
case 0:
console.log(
"%c 备注:", 'font-size:15px', apiName,
"\n 提交方式:", method,
"\n 提交地址:", apiUrl,
"\n 提交data:", data,
"\n 请求返回", apiRes.data);
break;
default:
console.log(
"%c 备注:", 'font-size:15px', apiName,
"\n 提交方式:", method,
"\n 提交地址:", apiUrl,
"\n 提交data:", data,
"\n 请求返回", apiRes.data);
break;
}
console.log(apiRes)
},
fail(apiRes) { //失败
resolve(apiRes); //成功返回,resolve是Promise的回调方式
console.error(
"%c 备注:", 'color:red;font-size:15px', apiName,
"\n 提交方式:", method,
"\n 提交地址:", apiUrl,
"\n 提交data:", data,
"\n 请求返回", apiRes);
if(show){
uni.hideLoading();
}
},
complete(res) { //结束
// #ifdef APP-PLUS
if (getApp().globalData.log == true) {
var logData = '备注:' + apiName +'\r\n'+ '提交方式:' + method + '\r\n'+'提交地址:' + apiUrl +'\r\n'+'token:'+uni.getStorageSync('token')+'\r\n'+ '提交data:' +
JSON.stringify(data) +'\r\n'+ '请求返回' + JSON.stringify(res.data)
log.writeLog(logData, false);
}
// #endif
if(show){
uni.hideLoading();
}
}
});
uni.request({
url: apiUrl, //仅为示例,并非真实接口地址。
data: data,
method: method,
header: header,
success: (apiRes) => { //成功
switch (apiRes.data.code) {
case 0:
console.log(
"%c 备注:", 'font-size:15px', apiName,
"\n 提交方式:", method,
"\n 提交地址:", apiUrl,
"\n 提交data:", data,
"\n 请求返回", apiRes.data);
break;
default:
console.log(
"%c 备注:", 'font-size:15px', apiName,
"\n 提交方式:", method,
"\n 提交地址:", apiUrl,
"\n 提交data:", data,
"\n 请求返回", apiRes.data);
break;
}
console.log(apiRes)
},
fail(apiRes) { //失败
resolve(apiRes); //成功返回,resolve是Promise的回调方式
console.error(
"%c 备注:", 'color:red;font-size:15px', apiName,
"\n 提交方式:", method,
"\n 提交地址:", apiUrl,
"\n 提交data:", data,
"\n 请求返回", apiRes);
if(show){
uni.hideLoading();
}
},
complete(res) { //结束
// #ifdef APP-PLUS
if (getApp().globalData.log == true) {
var logData = '备注:' + apiName +'\r\n'+ '提交方式:' + method + '\r\n'+'提交地址:' + apiUrl +'\r\n'+'token:'+uni.getStorageSync('token')+'\r\n'+ '提交data:' +
JSON.stringify(data) +'\r\n'+ '请求返回' + JSON.stringify(res.data)
log.writeLog(logData, false);
}
// #endif
if(show){
uni.hideLoading();
}
}
});
操作步骤:
关闭WIFI和数据后打开 APP uni.request调用返回 {"errMsg"quot;request:fail abort statusCode:-1"}
此时在打开WIFI或数据 APP uni.request直接不响应 出现假死状态 所有的API都不请求
最后从后台关闭APP再进 部分手机 进去会成一直假死的状态 只有从后台清除缓存 或者重新下载才能恢复
关闭WIFI和数据后打开 APP uni.request调用返回 {"errMsg"quot;request:fail abort statusCode:-1"}
此时在打开WIFI或数据 APP uni.request直接不响应 出现假死状态 所有的API都不请求
最后从后台关闭APP再进 部分手机 进去会成一直假死的状态 只有从后台清除缓存 或者重新下载才能恢复
预期结果:
手机 进去会成一直假死的状态 只有从后台清除缓存 或者重新下载才能恢复
手机 进去会成一直假死的状态 只有从后台清除缓存 或者重新下载才能恢复
实际结果:
如下视频 只有卸载重装才能恢复
如下视频 只有卸载重装才能恢复
bug描述:
关闭WIFI和数据后打开 APP uni.request调用返回 {"errMsg"quot;request:fail abort statusCode:-1"}
此时在打开WIFI或数据 APP uni.request直接不响应 出现假死状态 所有的API都不请求 (网络恢复后还是原来的样子)
但是再web上面运行复现不了这个问题 只有在真机里面才会有这个问题
Reaper (作者)
已经找到解决方案 加个定时任务就好了
2023-03-10 18:55
陛下有贱客
回复 Reaper: 感谢大佬 问了很多群没有一个回复的,按照你的方法加了个定时器解决了这个问题 不知道为什么会这样
2023-09-03 18:59
1***@qq.com
回复 Reaper: 你好,请问定时任务的逻辑是怎样的
2024-10-28 15:06