Павел Корнилов все правильно написал, метод get у axios асинхронный, возвращает промис.
Поэтому метод getPosts тоже нужно сделать асинхронным:
async getPosts(author) {
try {
const { data } = await axios.get(`${options.serverUrl}/posts/${author}`);
return data;
} catch(error) {
return error; // важный момент, что будет возвращать функция при ошибках выполнения запроса на сервер
}
},
Сделал небольшой пример на
codeSanbox, файл App.vue.
В консоли видна разница вывода для текущего метода getPosts и нового getPostsAsync
p.s.
Из контекста данного примера, на мой взгляд, метод getPosts достаточно бесполезный - увеличивает уровень абстракции, но не дает полноценное понимание кода.
Я бы внес запрос к серверу прямо в метод loadPosts:
async loadPosts () {
this.loading = true; // вешаем лоадер на момент асинхронного запроса
try {
const { data } = await axios.get(`${options.serverUrl}/posts/${this.$route.params.id}`);
this.posts = data;
this.loading = false;
} catch(error) {
// делаем что-то в случае ошибки
this.loading = false;
}
},