как я могу справиться с асин c функциями с топором ios vuejs - PullRequest
0 голосов
/ 03 мая 2020

Для рефакторинга кода я разбил его на три файла

Пользователи. vue когда у меня есть метод getUsers

getUsers() {
      this.isLoading = true
      this.$store
        .dispatch('auth/getValidToken')
        .then((data) => {
          this.$store
            .dispatch('user/fetchUsers', data.jwt)
            .then((response) => {
              console.log('DATA RESPONSE 2', response)
              this.items = response
              this.isLoading = false
            })
            .catch((error) => {
              console.log(error)
            })
        })
        .catch((error) => {
          this.$router.push('/pages/login')
          console.log(error)
        })
    },

user. js когда у меня есть действие

fetchUsers(context, jwt) {
    return UserService.getUsers(jwt)
  },

и UserServices. js когда у меня есть функция для вызова API

async getUsers(jwt) {
    apiUsers.defaults.headers.common['jwt'] = jwt
    await apiUsers.get('/users').then((response) => {
      console.log('DATA RESPONSE 1', response.data)
      let data = response
      return data
    })
  },

Как вы можете видеть, я помещаю сообщения в консольный журнал для отслеживания ответа API

ОТВЕТЫ НА ДАННЫЕ 1 показывают мне, как я ожидал, объект с данными пользователей, но ... ОТВЕТЫ НА ДАННЫЕ 2 показывают мне сообщение 'undefined'

Я новичок в vuejs, поэтому я буду признателен за любую помощь

1 Ответ

0 голосов
/ 03 мая 2020

Вам необходимо вернуть Обещание от getUsers().

Что-то вроде:

async getUsers(jwt) {
    apiUsers.defaults.headers.common['jwt'] = jwt
    return await apiUsers.get('/users').then((response) => {
      console.log('DATA RESPONSE 1', response.data)
      let data = response
      return data
    })
},

Обратите внимание: вы не используете async await, например, красиво нет необходимости ждать ответа в приведенном выше getUsers(), который вы можете просто вернуть, тогда как вы можете использовать async / await под вашим getUsers() Пользователем. vue.

...