Добавляет "На практике" для Promise.all()#5989
Conversation
|
@vitya-ne Отвлекся на рабочие дела и переделать пример оказалось не такой простой задачей. В результате предлагаю упростить пример и убрать отправку формы, потому что в этом примере перемешались Promise.all() и цепочка вызовов. |
| enableSubmitButton() | ||
| }) | ||
| .catch((error) => { | ||
| showValidationError(error) |
There was a problem hiding this comment.
предлагаю также добавить функцию для блокировки кнопки отправки (disableSubmitButton()) в блоке catch. Это необходимо для такого кейса:
Пользователь вводит корректные данные формы, кнопка отправки становится доступной (enabled). Пользователь меняет значение одного из полей формы на невалидное значение.
There was a problem hiding this comment.
Согласен, нельзя оставлять состояние кнопки без внимания. Добавил вызов функции, чтобы блокировать кнопку. Мне кажется теперь нормально. Да ведь? :)
Но мне теперь не очень нравится, что в части кода есть комментарии, например, вот здесь:
checkEmail(email), // Проверка, что email свободен
А в блоках then и catch комментариев к вызову функций нет. Мне кажется будет лучше, если будет одинаково. Я бы хотел убрать комментарии примера. Будет выглядеть так:
Promise.all([
checkEmail(email),
checkLogin(login),
checkPromoCode(promoCode)
])
.then(() => {
enableSubmitButton()
})
.catch((error) => {
disableSubmitButton()
showValidationError(error)
})
Как думаешь, убрать комментарии из кода?
There was a problem hiding this comment.
Коменты в коде на усмотрение автора.
А вообще, лучше описать всё обычным текстом над примером.
Я посмотрел на текущую реализацию немного под другим углом... |
Превью контента из bbbdad0 опубликовано. |
Ну да, теперь сложно объяснить использование Promise.all() для этой цели. Теперь мне даже не нравится первоначальный вариант, потому что можно было просто сделать валидацию на бэкенде в момент регистрации. |
Можно подумать как изменить описание самой формы. PromoseAll([check1(), check2(), check3()])
.then(()=> {
return true
})
.catch((error) => {
showValidationError(error)
return false
})
.then(valid=> {
if (valid) {
return submitRegistration({ email, login, promoCode }))
})
.catch((error) => {
showSubmitError(error)
}) |
Добавил еще один практический пример для
Promise.all()