programing

vuex 저장소 작업의 약속에서 오류를 반환하는 중

sourcetip 2022. 7. 16. 08:57
반응형

vuex 저장소 작업의 약속에서 오류를 반환하는 중

인증에 실패하면 오류를 반환하는 파서를 사용하여 로그인 액션을 설정하려고 합니다.다음으로 오류를 검출하여 오류를 표시한 컴포넌트로 되돌립니다.그러나 나는 항상 다루기 힘든 약속 거절을 당한다.

나는 이미 오류를 거부하거나 반환하는 다른 방법을 시도했지만 성공하지 못했다.reject(오류)(여기서 권장하는 Vuex 액션으로부터의 약속 반환) reject(오류) return 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 block이 에러를 검출하는 것을 상정하고 있습니다.

함수 반환을 새로운 약속으로 포장해야 합니다.

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)
          })
      })
    }
  }

언급URL : https://stackoverflow.com/questions/54378801/returning-error-from-promise-in-vuex-store-action

반응형