3***@qq.com
3***@qq.com
  • 发布:2022-06-16 19:47
  • 更新:2022-06-16 22:39
  • 阅读:602

uniCloud callFunction 的拦截器invoke 时,return false 无效

分类:uniCloud
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))

依然输出了

大家知道为啥吗

2022-06-16 19:47 负责人:无 分享
已邀请:
3***@qq.com

3***@qq.com (作者)

感觉是个bug啊
文档上说 此处返回错误可终止api执行 并没有什么用啊
invoke(param) {
// param为拦截Api的参数 例 {name: 'functionName', data: {'functionParam1': 1, 'functionParam2': 2}}
// 此处返回错误可终止api执行
},

DCloud_uniCloud_WYQ

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

3***@qq.com (作者)

uniCloud.addInterceptor('callFunction', {  
    invoke(option) {  
      const userStore = useUserStore();  
      const { token, expire } = storeToRefs(userStore)  
      const now = Date.now()  
       //pinia中没有token或者过期就跳转,有token就给请求中加token  
      if (!token.value || expire.value < now) {  
        uni.navigateTo({  
          url: '/pages/login/auth-login'  
        });  
        throw new Error()  
        // return false  
      } else {  
        setProperty(option, 'data.data.token', token.value)  
      }  
    }  
}
  • 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

该问题目前已经被锁定, 无法添加新回复