Просто целую вечность искал этот ответ и, наконец, нашел это простое, ясное объяснение! Благодарю. Не могу поверить, что больше людей не имеют этот вопрос!

ользую axios, чтобы проверить, не был ли псевдоним другим пользователем в базе данных.

проблема: Ajax-вызов не ожидает ответа сервера для выполнения оставшегося кода.

Код выглядит так:

export default {
    data () {
        return {
            id: null,
            alias: null,
            valid: true,
        }
    },

    methods: {
        // triggered by the save button
        save () {
            this.valid = true;
            console.log('before checking');

            this.checkUniqueness();
            // other validations here

            if (this.valid) {
                console.log('3. checked valid, can save now');
                // save now
            }
        },

        checkUniqueness () {
            axios.get('/api/unique/alias', {
                params: {
                    id: this.id,
                    alias: this.alias,
                }
            })
                .then((response) => {
                    console.log('2. server response:' + response.data.unique)
                    this.valid = response.data.unique;
                });
        },

    },
}

Консоль показывает следующий результат:
1. before checking
3. checked valid, can save now
2. server response:false

Я не могу переместить кодsave() метод в.then потому что я делаю другие проверки входных данных, такие как буквенно-цифровые символы, минимум символов ...

Я смог задержать 3-ю часть (if (this.valid) {) используя наборsetTimeout но это не лучшее решение. Что делать, если сервер занимает больше или меньше, чем определенное время ожидания ..

Вопрос Есть ли способ сделать этот вызов последовательным (1, 2, 3) вместо (1, 3, 2)?

Ответы на вопрос(1)

Ваш ответ на вопрос