更多关于uni-app 使用promise封装uni.request并打包成安卓或IOS应用时,uni.request会直接走error回调的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在uni-app中,使用Promise封装uni.request并在打包为原生应用(Android/iOS)时出现直接进入error回调的问题,通常与网络请求配置或平台差异有关。以下是可能的原因及解决方案:
1. 网络权限配置
- 问题:Android/iOS应用需要显式声明网络权限,否则请求会被阻塞。
- 解决:
2. 请求URL协议限制
- 问题:iOS默认禁用非HTTPS请求,若测试时使用HTTP,可能触发错误。
- 解决:
3. Promise封装逻辑问题
- 问题:封装代码可能未正确处理
uni.request的返回结果,导致错误提前触发。
- 示例封装代码:
function request(options) {
return new Promise((resolve, reject) => {
uni.request({
url: options.url,
method: options.method || 'GET',
data: options.data || {},
success: (res) => {
// 可在此处统一处理状态码
if (res.statusCode === 200) {
resolve(res.data);
} else {
reject(res);
}
},
fail: (err) => {
reject(err);
}
});
});
}