From 6b91d7d6bccb335e89eeabe73b91521a8098c546 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9?= Date: Fri, 24 Apr 2026 16:50:59 +0300 Subject: [PATCH 1/4] Promise all practice advice added --- js/promise-all/practice/zheleznikov.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 js/promise-all/practice/zheleznikov.md diff --git a/js/promise-all/practice/zheleznikov.md b/js/promise-all/practice/zheleznikov.md new file mode 100644 index 0000000000..8e02a99475 --- /dev/null +++ b/js/promise-all/practice/zheleznikov.md @@ -0,0 +1,17 @@ +🛠 `Promise.all()` удобно использовать, когда нужно дождаться нескольких независимых асинхронных операций и продолжить работу только после того, как все они завершатся успешно. + +Например, перед отправкой формы регистрации нужно проверить, свободны ли email и логин, действителен ли промокод. + +```js +const emailCheck = checkEmail(email) // Проверка, что email свободен +const loginCheck = checkLogin(login) // Проверка, что логин доступен +const promoCodeCheck = checkPromoCode(promoCode) // Проверка промокода + +Promise.all([emailCheck, loginCheck, promoCodeCheck]) + .then(() => submitRegistration({ email, login, promoCode })) + .catch((error) => { + console.error('Не удалось проверить данные формы:', error) + }) +``` + +Если все проверки завершатся успешно, выполнится обработчик `then()`, и форму можно будет отправить. Если хотя бы одна из них завершится ошибкой, промис, возвращённый `Promise.all()`, будет отклонён и сработает обработчик `catch()`. From 6fc32c8010402ddb1f89d110b2fa948b76c2a827 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9?= Date: Tue, 28 Apr 2026 17:58:01 +0300 Subject: [PATCH 2/4] Promise all practice advice updated --- js/promise-all/practice/zheleznikov.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/js/promise-all/practice/zheleznikov.md b/js/promise-all/practice/zheleznikov.md index 8e02a99475..28dd9f6438 100644 --- a/js/promise-all/practice/zheleznikov.md +++ b/js/promise-all/practice/zheleznikov.md @@ -3,15 +3,17 @@ Например, перед отправкой формы регистрации нужно проверить, свободны ли email и логин, действителен ли промокод. ```js -const emailCheck = checkEmail(email) // Проверка, что email свободен -const loginCheck = checkLogin(login) // Проверка, что логин доступен -const promoCodeCheck = checkPromoCode(promoCode) // Проверка промокода - -Promise.all([emailCheck, loginCheck, promoCodeCheck]) - .then(() => submitRegistration({ email, login, promoCode })) +Promise.all([ + checkEmail(email), // Проверка, что email свободен + checkLogin(login), // Проверка, что логин доступен + checkPromoCode(promoCode), // Проверка промокода +]) + .then(() => { + enableSubmitButton() + }) .catch((error) => { - console.error('Не удалось проверить данные формы:', error) + showValidationError(error) }) ``` -Если все проверки завершатся успешно, выполнится обработчик `then()`, и форму можно будет отправить. Если хотя бы одна из них завершится ошибкой, промис, возвращённый `Promise.all()`, будет отклонён и сработает обработчик `catch()`. +Если все проверки завершатся успешно, выполнится обработчик `then()`, и кнопку отправки формы можно будет сделать активной. Если хотя бы одна из них завершится ошибкой, промис, возвращённый `Promise.all()`, будет отклонён, сработает обработчик `catch()` и появится сообщение об ошибке валидации. From 9ec6b680c8ffffcae3b74a38c0ada6ec8839c26c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9?= Date: Wed, 29 Apr 2026 11:29:29 +0300 Subject: [PATCH 3/4] disableSubmitButton added to Promise all practice advice --- js/promise-all/practice/zheleznikov.md | 1 + 1 file changed, 1 insertion(+) diff --git a/js/promise-all/practice/zheleznikov.md b/js/promise-all/practice/zheleznikov.md index 28dd9f6438..74c1394637 100644 --- a/js/promise-all/practice/zheleznikov.md +++ b/js/promise-all/practice/zheleznikov.md @@ -12,6 +12,7 @@ Promise.all([ enableSubmitButton() }) .catch((error) => { + disableSubmitButton() showValidationError(error) }) ``` From bbbdad0db43d63b0502ad512c3a197193f92b3e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9?= Date: Wed, 29 Apr 2026 14:03:37 +0300 Subject: [PATCH 4/4] Promise all advice updated --- js/promise-all/practice/zheleznikov.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/js/promise-all/practice/zheleznikov.md b/js/promise-all/practice/zheleznikov.md index 74c1394637..ab7a1808df 100644 --- a/js/promise-all/practice/zheleznikov.md +++ b/js/promise-all/practice/zheleznikov.md @@ -2,11 +2,14 @@ Например, перед отправкой формы регистрации нужно проверить, свободны ли email и логин, действителен ли промокод. +Если все проверки завершатся успешно, выполнится обработчик `then()`, и кнопка отправки формы станет доступной для нажатия. Если хотя бы одна из проверок завершится с ошибкой, то промис, возвращённый `Promise.all()`, будет отклонён — сработает обработчик `catch()`: в этом случае мы заблокируем кнопку, а пользователь увидит сообщение об ошибке валидации. + + ```js Promise.all([ - checkEmail(email), // Проверка, что email свободен - checkLogin(login), // Проверка, что логин доступен - checkPromoCode(promoCode), // Проверка промокода + checkEmail(email), + checkLogin(login), + checkPromoCode(promoCode) ]) .then(() => { enableSubmitButton() @@ -16,5 +19,3 @@ Promise.all([ showValidationError(error) }) ``` - -Если все проверки завершатся успешно, выполнится обработчик `then()`, и кнопку отправки формы можно будет сделать активной. Если хотя бы одна из них завершится ошибкой, промис, возвращённый `Promise.all()`, будет отклонён, сработает обработчик `catch()` и появится сообщение об ошибке валидации.