Как получить результат работы асинхронной функции?

Пытаюсь с api получить данные, но приходит undefined:

import getShip from '../services/getShip'


export default {
  name: 'Main',
  components: {
    Header
  },
  methods: {
    async getShips () {
      const response = await getShip();
      console.log(response);
    }
  },
  mounted(){
    const viewer = Viewer(false)
    this.getShips()
    this.$store.commit('getShips', 10)
  }
}

Функция getShip:

import axios from 'axios';
import api from '../config/api';

export default function () {
  axios.get(api.udpEmulatorProxy)
  .then(function (response) {
    return response.data
  })
  .catch(function (error) {
    console.log(error);
  })
}

Функция getShips отрабатывает нормально. Но как вызвать её, я не понимаю.
  • Вопрос задан
  • 181 просмотр
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
function () {
  axios.get(api.udpEmulatorProxy)

Может, всё-таки return axios.get?

this.getShips()
this.$store.commit('getShips', 10)

Что-то не улавливаю смысла этого куска кода. Наверное, надо в мутацию (кстати, а почему её имя начинается с get? - смысл-то в установке значения, так что правильно было бы set) передавать те данные, что возвращает getShips:

this.$store.commit('getShips', await this.getShips());

А если эти данные должны лежать в хранилище, то, возможно, их получение стоит оформить в виде действия, а не как отдельно лежащую функцию / метод компонента.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы