export const api = (url: string, reqData: object) => {
return new Promise((resolve) => {
uni.showLoading({
title: "加载中"
})
uni.request({
url,
method: "POST",
data: reqData,
header: {
"from-source": "lowcode"
},
success: ({
data
}) => {
if (data.code === "0") {
resolve(data.data)
} else {
resolve({ err: true })
}
},
fail: (res) => {
console.log(res);
resolve({ err: true })
},
complete: () => {
uni.hideLoading()
}
});
})
}
const data = await api('https://')
- 发布:2023-07-19 16:41
- 更新:2023-10-11 08:11
- 阅读:597
【报Bug】对uni.request自定义封装new Promise,然后通过async、await方式调用,会导致uni.showLoading和uni.hideLoading方法在手机端报错
产品分类: uniapp/小程序/微信
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: 21H2
第三方开发者工具版本号: 3.7.11.20230427
基础库版本号: 3.0.0
项目创建方式: CLI
CLI版本号: 3.0.0-alpha-3060720221018002
示例代码:
操作步骤:
如上代码示例
如上代码示例
预期结果:
在真机端不会报错
在真机端不会报错
实际结果:
在真机端提示:errMsg":"hideLoading:fail:toast can't be found"
在真机端提示:errMsg":"hideLoading:fail:toast can't be found"
bug描述:
代码如下:
export const api = (url: string, reqData: object) => {
return new Promise((resolve) => {
uni.showLoading({
title: "加载中"
})
uni.request({
url,
method: "POST",
data: reqData,
header: {
"from-source": "lowcode"
},
success: ({
data
}) => {
if (data.code === "0") {
resolve(data.data)
} else {
resolve({ err: true })
}
},
fail: (res) => {
console.log(res);
resolve({ err: true })
},
complete: () => {
uni.hideLoading()
}
});
})
}
const data = await api('https://')
在ios11手机上报错:errMsg":"hideLoading:fail:toast can't be found",如果改成wx.showLoading和wx.hideLoading(),则不会报错
4 个回复
Diligent_UI - 【插件开发】【专治疑难杂症】【多款插件已上架:https://ext.dcloud.net.cn/publisher?id=193663(微信搜索飘逸科技UI小程序直接体验)】【骗子请绕道】问题咨询请加QQ群:120594820,代表作灵感实用工具小程序
这个和封装pomise有啥关系呢,你在其他场景试试有没有报错
3***@qq.com
这个就是微信的锅,在ios,uni.showLoading后马上执行hideLoading就会报这个错误,报就让随他吧,不影响其他逻辑。硬是要解决,就延时执行hideLoading
1***@qq.com
改成 wx.hideLoading() 就不报了 解决了后 想到是uni问题 才搜到的这个帖子
套马杆的套子 - 没有解决不了的问题,只有解决不完的问题
延时几百毫秒