Skip to content

Добавляет "На практике" для Promise.all() - #5989

Open
zheleznikov wants to merge 5 commits into
doka-guide:mainfrom
zheleznikov:js-promise-all-advice
Open

Добавляет "На практике" для Promise.all()#5989
zheleznikov wants to merge 5 commits into
doka-guide:mainfrom
zheleznikov:js-promise-all-advice

Conversation

@zheleznikov

@zheleznikov zheleznikov commented Apr 24, 2026

Copy link
Copy Markdown
Contributor

Добавил еще один практический пример для Promise.all()

Превью: https://content-5989.dev.doka.guide/js/promise-all/#sergey-zheleznikov-sovetuet

@zheleznikov zheleznikov changed the title Добавляет "На практике" для Promise.all Добавляет "На практике" для Promise.all() Apr 24, 2026
@github-actions github-actions Bot added the js Контент по JavaScript label Apr 24, 2026
Comment thread js/promise-all/practice/zheleznikov.md Outdated
Comment thread js/promise-all/practice/zheleznikov.md
@zheleznikov

Copy link
Copy Markdown
Contributor Author

@vitya-ne
Витя, привет.
Извини за долгую задержку.

Отвлекся на рабочие дела и переделать пример оказалось не такой простой задачей. В результате предлагаю упростить пример и убрать отправку формы, потому что в этом примере перемешались Promise.all() и цепочка вызовов.
Теперь в примере, в случае успешного выполнения всех промисов, просто будет доступна кнопка отправки данных.
Это вполне жизненно и не перегружает.
Вот ссылка на страницу на превью: https://content-5989.dev.doka.guide/js/promise-all/

Comment thread js/promise-all/practice/zheleznikov.md Outdated
@vitya-ne

Copy link
Copy Markdown
Contributor

Теперь в примере, в случае успешного выполнения всех промисов, просто будет доступна кнопка отправки данных. Это вполне жизненно и не перегружает. Вот ссылка на страницу на превью: https://content-5989.dev.doka.guide/js/promise-all/

Я посмотрел на текущую реализацию немного под другим углом...
Сейчас получается что мы должны выполнять Promise.all() при любом изменении зависимых полей в форме. При этом будут выполняться все три проверки, даже если рузльтат первой вернёт false.
Насколько это оптимальный подход ?
В первоначальном варианте, выполнение всех проверок было оправдано, так как происходило однакратно при попытке отправки формы.

@zheleznikov

Copy link
Copy Markdown
Contributor Author

Теперь в примере, в случае успешного выполнения всех промисов, просто будет доступна кнопка отправки данных. Это вполне жизненно и не перегружает. Вот ссылка на страницу на превью: https://content-5989.dev.doka.guide/js/promise-all/

Я посмотрел на текущую реализацию немного под другим углом... Сейчас получается что мы должны выполнять Promise.all() при любом изменении зависимых полей в форме. При этом будут выполняться все три проверки, даже если рузльтат первой вернёт false. Насколько это оптимальный подход ? В первоначальном варианте, выполнение всех проверок было оправдано, так как происходило однакратно при попытке отправки формы.

Ну да, теперь сложно объяснить использование Promise.all() для этой цели. Теперь мне даже не нравится первоначальный вариант, потому что можно было просто сделать валидацию на бэкенде в момент регистрации.
Предлагаю пока что захолдить этот совет. Подумаю, насколько он полезен.
Просто хотелось показать случай, когда нужно получить какую-то информацию из нескольких источников и если вся информация пришла, то какая-то возможность становится доступной.

@vitya-ne

Copy link
Copy Markdown
Contributor

Теперь в примере, в случае успешного выполнения всех промисов, просто будет доступна кнопка отправки данных. Это вполне жизненно и не перегружает. Вот ссылка на страницу на превью: https://content-5989.dev.doka.guide/js/promise-all/

Я посмотрел на текущую реализацию немного под другим углом... Сейчас получается что мы должны выполнять Promise.all() при любом изменении зависимых полей в форме. При этом будут выполняться все три проверки, даже если рузльтат первой вернёт false. Насколько это оптимальный подход ? В первоначальном варианте, выполнение всех проверок было оправдано, так как происходило однакратно при попытке отправки формы.

Ну да, теперь сложно объяснить использование 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)
  })

@solarrust

Copy link
Copy Markdown
Member

@zheleznikov Привет! Планируешь ли ты закончить этот пулреквест?

@zheleznikov

Copy link
Copy Markdown
Contributor Author

@solarrust Привет, возвращаюсь к работе над советом. Спасибо, что обратила мое внимание.

@github-actions

Copy link
Copy Markdown
Превью контента из b37ecee опубликовано.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

js Контент по JavaScript

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants