Страница 1 из 1

Как во Vue2 с помощью axios без setTimeout() перехватить данные асинхронного запроса?

Добавлено: 2018.04.02, 07:00
EVOSandru6
Добрый день,

Есть такая проблема. По http запросу вытаскиваю данные с сервера для первичной инициализации. Но возникает проблема во время выполнения - данные которые риходят в ответах не получается перехватить из за асинхронности таковых запросов.

Пример отражает мою проблему. Максимально упростил для понятности.

Код: Выделить всё

export default {

        data: function () {
            return {
                order: null,
            }
        },
        created() {

            this.initOrder();

            this.initOptions();
        },

        methods: {

            initOrder() {

                HTTP.get('/orders/id=' + this.$route.params.id).then((response) =>
                {

                    this.order = response.data;
                });
            },
            initOptions() {

                console.log(this.order); // return null

                // ...

                this.order.param = 'oops'; // exception cannot read property of null

                // ...

                setTimeout(() => {

                    console.log(this.order); // return expected object

                    this.order.param = 'oops'; // so good by setTimeout is cumbersome

                }, 1000);
            }
        },
    }

}

Интересует - как можно решить данную проблему в крайнем случаем убийством ассинхронности или еще как то по человечески.

Re: Как во Vue2 с помощью axios без setTimeout() перехватить данные асинхронного запроса?

Добавлено: 2018.04.02, 11:09
zelenin
сделай последовательно, если нужно последовательно)

Re: Как во Vue2 с помощью axios без setTimeout() перехватить данные асинхронного запроса?

Добавлено: 2018.04.02, 12:19
EVOSandru6
zelenin писал(а): 2018.04.02, 11:09 сделай последовательно, если нужно последовательно)
Я бы с удовольствием, но даже async/await и asyncComputed не помогает в этом вопросе(

Re: Как во Vue2 с помощью axios без setTimeout() перехватить данные асинхронного запроса?

Добавлено: 2018.04.02, 12:23
zelenin
initOrder() {

return HTTP.get('/orders/id=' + this.$route.params.id).then((response) =>
{

this.order = response.data;
});
},

this.initOrder().then() => {
this.initOptions();
})

Re: Как во Vue2 с помощью axios без setTimeout() перехватить данные асинхронного запроса?

Добавлено: 2018.04.03, 10:55
EVOSandru6
Благодарю!