// 拦截器
uni.addInterceptor('showToast', {
invoke: args => {
// 标题为空时,取消当前API调用
// 但API永远是pending状态,无法进入catch、finally
if (!args.title) return false
}
})
// 【需求】title为空时,可触发catch、finally
uni.showToast({ title: '' })
.then(res => console.log('then', res))
.catch(error => console.log('catch', error))
.finally(() => console.log('end'))
zZZ1Ma
- 发布:2023-05-16 12:37
- 更新:2024-02-29 11:11
- 阅读:446
可以通过修改 returnValue
来实现,比如:
let invoke = true;
uni.addInterceptor('showToast', {
invoke(args) {
if (args.title === 'test') {
invoke = false;
return invoke;
}
},
returnValue(...args) {
if (!invoke) {
invoke = true;
return Promise.reject();
}
}
});
zZZ1Ma (作者)
此处使用showToast模拟request,需求类似:url不符合自定义规则时,取消当前request,使其进入catch()、finally(),在finally内重置button[disabled]
zZZ1Ma (作者)
验证可行
2023-05-17 16:15
zZZ1Ma (作者)
更新一下:invoke内throw即可触发uni.showToast().catch(...)
2024-02-01 16:12