【问题标题】:Returning error from promise in vuex store action从 vuex 存储操作中的承诺返回错误
【发布时间】:2019-06-20 02:04:53
【问题描述】:

我正在尝试使用 Parser 设置登录操作,如果身份验证失败,它将返回错误。然后我想捕获错误并将其返回给我显示错误的组件。但是,我总是收到未处理的承诺拒绝。

我已经尝试了不同的方法来拒绝或返回错误但没有成功。 拒绝(错误)(这里推荐Returning Promises from Vuex actions) 返回拒绝(错误) 返回 Promise.reject(错误) 返回 Promise.reject(新的错误(错误)) 或者干脆 返回错误

我的行动:

actions: {
      login(vuexContext, authData) {
        console.log(authData.email)
        Parse.User.logIn(authData.email, authData.password)
          .then(user => {
            vuexContext.commit('SET_USER', user)
          })
          .catch(error => {
            console.error('Actions login - Error: ' + error)
            reject(error)
          })
      }

我的提交方法:

onSubmit() {
      this.$store
        .dispatch('login', {
          email: this.formData.email,
          password: this.formData.password
        })
        .then(() => {
          // ..
        })
        .catch(error => {
          console.log('Catching' + error)
          if (error.code == 101) {
            this.errorMsg = 'Email oder Passwort falsch'
          } else {
            this.errorMsg =
              'Entschuldigung, hier ist etwas schief gelaufen... Fehler: ' +
              error.message
          }
          this.showError = true
          this.$router.push('/sessions/new')
        })
    }

我希望 onSubmit 方法中的 catch 块捕获错误。

【问题讨论】:

    标签: vue.js vuejs2 vuex


    【解决方案1】:

    你必须将函数 return 包装成一个新的 Promise。

    actions: {
        login(vuexContext, authData) {
          return new Promise((resolve, reject) => {
            console.log(authData.email)
            Parse.User.logIn(authData.email, authData.password)
              .then(user => {
                vuexContext.commit('SET_USER', user)
                resolve()
              })
              .catch(error => {
                console.error('Actions login - Error: ' + error)
                reject(error)
              })
          })
        }
      }
    

    【讨论】:

    • 这是多余的return Parse.User是一样的
    猜你喜欢
    • 2019-07-30
    • 2019-08-27
    • 2018-04-24
    • 2019-04-21
    • 2018-12-02
    • 2017-05-22
    • 2018-11-26
    • 1970-01-01
    相关资源
    最近更新 更多