账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    如何合理的封装一个Promise对象?
    40
    0

    现在有如下方法:

    isProvid(){
      return this.$store.dispatch('isSupported')
    }

    该方法只考虑正确返回的情况,因为其他异常通过axios的拦截器里面处理掉了,返回值里面包含一个code,如果code不为空,表示有业务错误,需要前端提示,否则表示正确。

    现在有三个地方需要调用该方法,如果有错误(code不为空),所有调用方法的错误处理方式都一样——弹出alert就好,如果正确,有两个调用的地方需要自行处理,如下:

    //第一处调用
    this.isProvid().then(res => {
        //处理A逻辑
    })
    //第二处调用
    this.isProvid().then(res => {
        //处理B逻辑
    })
    //第一处调用(不处理任何逻辑)
    this.isProvid()

    那么,isProvid应该如何封装呢?

    自己的思路

    isProvid(){
        return this.$store.dispatch('isProvid').then(res => {
            let code = res.data.code;
            if(!code){//code不为空,表示有错误信息
                alert('弹出根据code对应的错误信息')
                return Promise.reject()//不需要返回错误信息,因为这里已经集中处理了
            }else{
                //如果正确,不返回任何东西,因为调用方不需要根据返回值来判断
                return Promise.resolve() 
            }
        })
    }

    注意:三个调用方都是以then方式来调用isProvid方法

    疑问如下:
    1、这么写正确么?
    2、return this.$store.dispatch('isProvid')返回的就是promise,但是then里面又包含了return Promise返回promise对象,是什么意思呢?(看到有人这么写,但是不知道这么写正确不)

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 石鸿天下 普通会员 1楼
      502 Bad Gateway

      502 Bad Gateway


      nginx
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部