Вы не можете сделать событие синхронным. Даже если бы вы могли это сделать, пользовательский интерфейс зависнет, а это не то, что вам нужно.
Лучше всего будет disable
нажать кнопку, пока запрос находится в полете, и включить его снова после того, как вы получите ответ. Поскольку вы используете div, вы можете стилизовать его по-разному в зависимости от состояния запросов.
Добавьте флаг loading
к вашему data
data() {
return {
...
loading: false
}
}
Установите css класс в зависимости от значения флага
<div class="input-group-prepend"
v-bind:class="{ disabled: loading }" >
Обновите флаг из ваших методов
async updateCart(item, quantity){
if(this.loading) {
return
}
this.loading = true
let q = quantity + item.quantity;
let data = {
quantity: q,
id: item.key
}
let startedQuantity=q;
let json = await axios.post('/cart/change.js', data );
this.loading = false
...