bootd
@bootd
Гугли и ты откроешь врата знаний!

Как лучше обработать асинхронность?

Есть у меня в компоненте vue форма. Задумался, как лучше её обработать при отправке.

1й вариант, через async/await
async onSubmitAuth () {
  const isValid = await this.$refs.formAuth.validate()

  if (!isValid) {
    return
  }

  try {
    this.setLoading(true)
    await this.signIn(this.form.auth.model)
    this.setLoading(false)
  } catch (error) {
    this.showErrors(error)
    this.setLoading(false)
  }
},


2й вариант, через промисы и колбеки
onSubmitAuth () {
  this.$refs.formAuth.validate(isValid => {
    if (isValid) {
      this.setLoading(true)

      this.signIn(this.form.auth.model)
        .then(_ => {
          this.setLoading(false)
        })
        .catch(error => {
          this.showErrors(error)
          this.setLoading(false)
        })
    }
})


Оба варианта полностью рабочие, но, я всегда писал по 2му примеру, а тут решил попробовать написать через async/await и у меня встал вопрос, какой же вариант лучше.

В 1м варианте я могу юзать await, код получился более линейным и непонятным что ли для меня, хз. Но, тут onSubmitAuth сразу говорит, что функция делает что-то асинхронное, грубо говоря уже в самом начале себя документирует.
Во 2м варианте, более понятный для меня код, но тут нет await и как бы сам onSubmitAuth не говорит с 1го раза, что он делает что-то асинхронное.

Какой вариант более предпочтителен? Может я просто придираюсь сам к себе, не знаю))

P.S. this.$refs.formAuth.validate() - возвращает промис, юзаю element-ui, валидацией под его капотом занимается библиотека async-validator, что бы лишних вопросов не возникало
  • Вопрос задан
  • 106 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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