@lacront

Правильна ли моя логика относительно async/await?

Суть ситуации - необходимо от двух разных API получить три ответа следующим образом.

('getMarketData') - обращается к одному API.
('getCoins'), ('getQuote', 'BTC') к другому (их нужно выполнить последовательно, это обязательно).

Написал такой код:
created(){
    this.$store.state.isLoading = true;
    const $this = this;
    const loadData = async function(){
      const market = $this.$store.dispatch('getMarketData');
      let coins = await $this.$store.dispatch('getCoins');
      coins = await $this.$store.dispatch('getQuote', 'BTC');
      return await market + coins;
    }
    loadData().then(() => {
      this.$store.state.isLoading = false;
    });
  },


Подскажите, пожалуйста, правильно ли я сделал?
Также непонятно что делать с return, по факту возвращать ничего не надо.
  • Вопрос задан
  • 171 просмотр
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
Не вижу тут никакой особой логики - только ничем не мотивированное усложнение кода. Если вы говорите, что "возвращать ничего не надо" - зачем тогда получать результаты, складывать их? Да ещё и перетирая один из них, никак не использовав. Так что: вызов первого экшена - оставляем без изменений; второй и третий - просто await'ы, переменную coins убираем; в конце - просто await market, return и суммирование убираем.

Зачем сохранять контекст в отдельную переменную? - при создании стрелочных функций тоже можно использовать async.

Установка значения isLoading - почему вы меняете состояние хранилища вне мутации? Так дела не делаются.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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