uniCloud.addInterceptor('callFunction', {
invoke(param) {
console.log(123)
return false
}
})
这个return false没有效果,不希望他继续执行云函数的api请求。但是实际上他还是执行了。
uniCloud.callFunction({
name: 'api',
data: { test: 'test' }
}).then(resp => console.log(resp))
依然输出了
大家知道为啥吗
3 个回复
3***@qq.com (作者)
感觉是个bug啊
文档上说 此处返回错误可终止api执行 并没有什么用啊
invoke(param) {
// param为拦截Api的参数 例 {name: 'functionName', data: {'functionParam1': 1, 'functionParam2': 2}}
// 此处返回错误可终止api执行
},
DCloud_uniCloud_WYQ
暂未实现return false终止执行,现在只能通过抛错终止执行
3***@qq.com (作者)
非常感谢 这么说来这是一个bug?是否后面会修复?
2022-06-16 21:02
DCloud_uniCloud_WYQ
回复 3***@qq.com: 不是bug,就是这么设计的,你期望return false之后触发云函数的fail回调吗?
2022-06-16 21:27
3***@qq.com (作者)
回复 DCloud_uniCloud_WYQ: 我希望return false后就不再继续执行调用云函数。就是希望中止api的执行
2022-06-16 22:26
3***@qq.com (作者)
回复 DCloud_uniCloud_WYQ:
比如说我这边是判断请求中有没有token,没有的话跳转,这时候就不希望这个请求再发到云函数了。是不是这种情况不适合用拦截器?
2022-06-16 22:36
3***@qq.com (作者)
回复 DCloud_uniCloud_WYQ: 我下面贴了代码 拦截器是这样用的吗?这种思路对吗?如果没token希望先让他登陆。这样可以节流
2022-06-16 22:40
3***@qq.com (作者)
DCloud_uniCloud_WYQ
后续会实现return false终止运行,目前throw error会进入云函数的fail回调。在你这个场景下没有return false方便
2022-06-17 12:28
3***@qq.com (作者)
回复 DCloud_uniCloud_WYQ: 非常感谢回答!
2022-06-17 14:51