Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/yuriipohorilets/goit-js-hw-09
π JS-HW-09 | Async. Data. Promise
https://github.com/yuriipohorilets/goit-js-hw-09
async goit javascript promise
Last synced: about 3 hours ago
JSON representation
π JS-HW-09 | Async. Data. Promise
- Host: GitHub
- URL: https://github.com/yuriipohorilets/goit-js-hw-09
- Owner: YuriiPohorilets
- Created: 2022-08-26T06:55:11.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2022-10-06T11:13:44.000Z (about 2 years ago)
- Last Synced: 2024-07-30T20:04:16.059Z (4 months ago)
- Topics: async, goit, javascript, promise
- Language: JavaScript
- Homepage: https://yuriipohorilets.github.io/goit-js-hw-09/
- Size: 1.42 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ΠΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΡΡΡ ΠΈ Data. ΠΡΠΎΠΌΠΈΡΡ | goit-js-hw-09
## ΠΡΠΈΡΠ΅ΡΠΈΠΈ ΠΏΡΠΈΠ΅ΠΌΠ°
- Π‘ΠΎΠ·Π΄Π°Π½ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ `goit-js-hw-09`.
- ΠΡΠΈ ΡΠ΄Π°ΡΠ΅ Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΉ ΡΠ°Π±ΠΎΡΡ Π΅ΡΡΡ Π΄Π²Π΅ ΡΡΡΠ»ΠΊΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°: Π½Π° ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈ ΡΠ°Π±ΠΎΡΡΡ ΡΡΡΠ°Π½ΠΈΡΡ Π½Π° `GitHub Pages`.
- ΠΡΠΈ ΠΏΠΎΡΠ΅ΡΠ΅Π½ΠΈΠΈ ΠΆΠΈΠ²ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ Π·Π°Π΄Π°Π½ΠΈΡ, Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ Π½Π΅ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ.
- ΠΡΠΎΠ΅ΠΊΡ ΡΠΎΠ±ΡΠ°Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΡ [parcel-project-template](https://github.com/goitacademy/parcel-project-template).
- ΠΠΎΠ΄ ΠΎΡΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ `Prettier`.## Π‘ΡΠ°ΡΡΠΎΠ²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ
[Π‘ΠΊΠ°ΡΠ°ΠΉ](https://downgit.github.io/#/home?url=https:%2F%2Fgithub.com%2Fgoitacademy%2Fjavascript-homework%2Ftree%2Fmain%2Fv2%2F09%2Fsrc) ΡΡΠ°ΡΡΠΎΠ²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Ρ Π³ΠΎΡΠΎΠ²ΠΎΠΉ ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΎΠΉ, ΡΡΠΈΠ»ΡΠΌΠΈ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ² Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π°Π΄Π°Π½ΠΈΡ. Π‘ΠΊΠΎΠΏΠΈΡΡΠΉ ΠΈΡ ΡΠ΅Π±Π΅ Π² ΠΏΡΠΎΠ΅ΠΊΡ, ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π·Π°ΠΌΠ΅Π½ΠΈΠ² ΠΏΠ°ΠΏΠΊΡ `src` Π² [parcel-project-template](https://github.com/goitacademy/parcel-project-template).### ΠΠ°Π΄Π°Π½ΠΈΠ΅ 1 - ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»Ρ ΡΠ²Π΅ΡΠΎΠ²
ΠΡΠΏΠΎΠ»Π½ΡΠΉ ΡΡΠΎ Π·Π°Π΄Π°Π½ΠΈΠ΅ Π² ΡΠ°ΠΉΠ»Π°Ρ `01-color-switcher.html` ΠΈ `01-color-switcher.js`. ΠΠΎΡΠΌΠΎΡΡΠΈ Π΄Π΅ΠΌΠΎ Π²ΠΈΠ΄Π΅ΠΎ ΡΠ°Π±ΠΎΡΡ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»Ρ.Π HTML Π΅ΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ Β«StartΒ» ΠΈ Β«StopΒ».
```
Start
Stop
```
ΠΠ°ΠΏΠΈΡΠΈ ΡΠΊΡΠΈΠΏΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΡΠ»Π΅ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ Β«StartΒ», ΡΠ°Π· Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ²Π΅Ρ ΡΠΎΠ½Π° `` Π½Π° ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΈΠ½Π»Π°ΠΉΠ½ ΡΡΠΈΠ»Ρ. ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ Β«StopΒ», ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠ° ΡΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ.>:warning: **ΠΠΠΠΠΠΠΠ!** Π£ΡΡΠΈ, Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ Β«StartΒ» ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΆΠ°ΡΡ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·. Π‘Π΄Π΅Π»Π°ΠΉ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΊΠ° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΌΡ Π·Π°ΠΏΡΡΠ΅Π½ΠΎ, ΠΊΠ½ΠΎΠΏΠΊΠ° Β«StartΒ» Π±ΡΠ»Π° Π½Π΅ Π°ΠΊΡΠΈΠ²Π½Π° (disabled).
ΠΠ»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉ ΡΡΠ½ΠΊΡΠΈΡ `getRandomHexColor`.
```
function getRandomHexColor() {
return `#${Math.floor(Math.random() * 16777215).toString(16)}`;
}
```
### ΠΠ°Π΄Π°Π½ΠΈΠ΅ 2 - ΡΠ°ΠΉΠΌΠ΅Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΎΡΡΡΠ΅ΡΠ°
ΠΡΠΏΠΎΠ»Π½ΡΠΉ ΡΡΠΎ Π·Π°Π΄Π°Π½ΠΈΠ΅ Π² ΡΠ°ΠΉΠ»Π°Ρ `02-timer.html` ΠΈ `02-timer.js`. ΠΠ°ΠΏΠΈΡΠΈ ΡΠΊΡΠΈΠΏΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π²Π΅Π΄ΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ ΠΎΡΡΡΠ΅Ρ Π΄ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π΄Π°ΡΡ. Π’Π°ΠΊΠΎΠΉ ΡΠ°ΠΉΠΌΠ΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² Π±Π»ΠΎΠ³Π°Ρ ΠΈ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°Ρ , ΡΡΡΠ°Π½ΠΈΡΠ°Ρ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ, Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΈ Ρ. Π΄. ΠΠΎΡΠΌΠΎΡΡΠΈ Π΄Π΅ΠΌΠΎ Π²ΠΈΠ΄Π΅ΠΎ ΡΠ°Π±ΠΎΡΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ°.#### ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°
Π HTML Π΅ΡΡΡ Π³ΠΎΡΠΎΠ²Π°Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΊΠ° ΡΠ°ΠΉΠΌΠ΅ΡΠ°, ΠΏΠΎΠ»Ρ Π²ΡΠ±ΠΎΡΠ° ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΉ Π΄Π°ΡΡ ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΏΡΠΈ ΠΊΠ»ΠΈΠΊΠ΅ ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ°ΠΉΠΌΠ΅Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ. ΠΠΎΠ±Π°Π²Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°.
```Start
00
Days
00
Hours
00
Minutes
00
Seconds
```
#### ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° `flatpickr`
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ [flatpickr](https://flatpickr.js.org/) Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΊΡΠΎΡΡΠ±ΡΠ°ΡΠ·Π΅ΡΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ CSS ΠΊΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² ΠΏΡΠΎΠ΅ΠΊΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠΌΠΏΠΎΡΡ, ΠΊΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΠΈΡΠ°Π½ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
```
// ΠΠΏΠΈΡΠ°Π½ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ
import flatpickr from "flatpickr";
// ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΈΠΌΠΏΠΎΡΡ ΡΡΠΈΠ»Π΅ΠΉ
import "flatpickr/dist/flatpickr.min.css";
```
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ΡΡΠΎ Π΅Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡ Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅ `input[type="text"]`, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π² HTML Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΏΠΎΠ»Π΅ `input#datetime-picker`.
``````
ΠΡΠΎΡΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ `flatpickr(selector, options)` ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². ΠΡ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΠ»ΠΈ Π΄Π»Ρ ΡΠ΅Π±Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠΎΡΠΎΡΡΠΉ Π½ΡΠΆΠ΅Π½ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°Π΄Π°Π½ΠΈΡ. Π Π°Π·Π±Π΅ΡΠΈΡΡ Π·Π° ΡΡΠΎ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Β«OptionsΒ» ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉ Π΅Π³ΠΎ Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΊΠΎΠ΄Π΅.
```
const options = {
enableTime: true,
time_24hr: true,
defaultDate: new Date(),
minuteIncrement: 1,
onClose(selectedDates) {
console.log(selectedDates[0]);
},
};
```
#### ΠΡΠ±ΠΎΡ Π΄Π°ΡΡ
ΠΠ΅ΡΠΎΠ΄ `onClose()` ΠΈΠ· ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΡΠΈ Π·Π°ΠΊΡΡΡΠΈΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°Π΅Ρ `flatpickr`. ΠΠΌΠ΅Π½Π½ΠΎ Π² Π½ΡΠΌ ΡΡΠΎΠΈΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π΄Π°ΡΡ Π²ΡΠ±ΡΠ°Π½Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ `selectedDates` ΡΡΠΎ ΠΌΠ°ΡΡΠΈΠ² Π²ΡΠ±ΡΠ°Π½Π½ΡΡ Π΄Π°Ρ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ Π±Π΅ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ.- ΠΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΡΠ±ΡΠ°Π» Π΄Π°ΡΡ Π² ΠΏΡΠΎΡΠ»ΠΎΠΌ, ΠΏΠΎΠΊΠ°ΠΆΠΈ `window.alert()` Ρ ΡΠ΅ΠΊΡΡΠΎΠΌ `"Please choose a date in the future"`.
- ΠΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΡΠ±ΡΠ°Π» Π²Π°Π»ΠΈΠ΄Π½ΡΡ Π΄Π°ΡΡ (Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ), ΠΊΠ½ΠΎΠΏΠΊΠ° Β«StartΒ» ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π°ΠΊΡΠΈΠ²Π½ΠΎΠΉ.
- ΠΠ½ΠΎΠΏΠΊΠ° Β«StartΒ» Π΄ΠΎΠ»ΠΆΠ° Π±ΡΡΡ Π½Π΅ Π°ΠΊΡΠΈΠ²Π½Π° Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ Π²ΡΠ±ΡΠ°Π» Π΄Π°ΡΡ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ.
- ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ Β«StartΒ» Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΠΎΡΡΡΠ΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π΄ΠΎ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΉ Π΄Π°ΡΡ Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π°ΠΆΠ°ΡΠΈΡ.
#### ΠΡΡΡΠ΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ
ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ Β«StartΒ» ΡΠΊΡΠΈΠΏΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΡΠΈΡΠ»ΡΡΡ ΡΠ°Π· Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΡΡΠ°Π»ΠΎΡΡ Π΄ΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π΄Π°ΡΡ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ°, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Ρ ΡΠ΅ΡΡΡΠ΅ ΡΠΈΡΡΡ: Π΄Π½ΠΈ, ΡΠ°ΡΡ, ΠΌΠΈΠ½ΡΡΡ ΠΈ ΡΠ΅ΠΊΡΠ½Π΄Ρ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ `xx:xx:xx:xx`.- ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄Π½Π΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΡΡΠΎΡΡΡ ΠΈΠ· Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ Π΄Π²ΡΡ ΡΠΈΡΡ.
- Π’Π°ΠΉΠΌΠ΅Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ ΠΊΠΎΠ³Π΄Π° Π΄ΠΎΡΠ΅Π» Π΄ΠΎ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΉ Π΄Π°ΡΡ, ΡΠΎ Π΅ΡΡΡ `00:00:00:00`.>:exclamation: **ΠΠ ΠΠ£ΠΠΠ Π£Π‘ΠΠΠΠΠ―Π’Π¬** ΠΡΠ»ΠΈ ΡΠ°ΠΉΠΌΠ΅Ρ Π·Π°ΠΏΡΡΠ΅Π½, Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π²ΡΠ±ΡΠ°ΡΡ Π½ΠΎΠ²ΡΡ Π΄Π°ΡΡ ΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΡ Π΅Π³ΠΎ - Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΡΡΡΠ°Π½ΠΈΡΡ.
ΠΠ»Ρ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉ Π³ΠΎΡΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΡ `convertMs`, Π³Π΄Π΅ `ms` - ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΉ ΠΈ ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π΄Π°ΡΠΎΠΉ Π² ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄Π°Ρ .
```
function convertMs(ms) {
// Number of milliseconds per unit of time
const second = 1000;
const minute = second * 60;
const hour = minute * 60;
const day = hour * 24;// Remaining days
const days = Math.floor(ms / day);
// Remaining hours
const hours = Math.floor((ms % day) / hour);
// Remaining minutes
const minutes = Math.floor(((ms % day) % hour) / minute);
// Remaining seconds
const seconds = Math.floor((((ms % day) % hour) % minute) / second);return { days, hours, minutes, seconds };
}console.log(convertMs(2000)); // {days: 0, hours: 0, minutes: 0, seconds: 2}
console.log(convertMs(140000)); // {days: 0, hours: 0, minutes: 2, seconds: 20}
console.log(convertMs(24140000)); // {days: 0, hours: 6 minutes: 42, seconds: 20}
```
#### Π€ΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ
Π€ΡΠ½ΠΊΡΠΈΡ `convertMs()` Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΡΠ°ΡΡΡΠΈΡΠ°Π½Π½ΡΠΌ ΠΎΡΡΠ°Π²ΡΠΈΠΌΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π΄ΠΎ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΉ Π΄Π°ΡΡ. ΠΠ±ΡΠ°ΡΠΈ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΎΠ½Π° Π½Π΅ ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ. Π’ΠΎ Π΅ΡΡΡ, Π΅ΡΠ»ΠΈ ΠΎΡΡΠ°Π»ΠΎΡΡ 4 ΠΌΠΈΠ½ΡΡΡ ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ Π²Π΅ΡΠ½Π΅Ρ `4`, Π° Π½Π΅ `04`. Π ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ ΡΠ°ΠΉΠΌΠ΅ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ `0` Π΅ΡΠ»ΠΈ Π² ΡΠΈΡΠ»Π΅ ΠΌΠ΅Π½ΡΡΠ΅ Π΄Π²ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². ΠΠ°ΠΏΠΈΡΠΈ ΡΡΠ½ΠΊΡΠΈΡ `addLeadingZero(value)`, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ ΠΌΠ΅ΡΠΎΠ΄ `padStart()` ΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.#### ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ
>:warning: **ΠΠΠΠΠΠΠΠ** ΠΡΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»Π΅Π½ ΠΏΡΠΈ ΡΠ΄Π°ΡΠ΅ Π·Π°Π΄Π°Π½ΠΈΡ, Π½ΠΎ Π±ΡΠ΄Π΅Ρ Ρ ΠΎΡΠΎΡΠ΅ΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΎΠΉ.ΠΠ»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΠΌΠ΅ΡΡΠΎ `window.alert()` ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ [notiflix](https://github.com/notiflix/Notiflix#readme).
### ΠΠ°Π΄Π°Π½ΠΈΠ΅ 3 - Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ ΠΏΡΠΎΠΌΠΈΡΠΎΠ²
ΠΡΠΏΠΎΠ»Π½ΡΠΉ ΡΡΠΎ Π·Π°Π΄Π°Π½ΠΈΠ΅ Π² ΡΠ°ΠΉΠ»Π°Ρ `03-promises.html` ΠΈ `03-promises.js`. ΠΠΎΡΠΌΠΎΡΡΠΈ Π΄Π΅ΠΌΠΎ Π²ΠΈΠ΄Π΅ΠΎ ΡΠ°Π±ΠΎΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° ΠΏΡΠΎΠΌΠΈΡΠΎΠ².Π HTML Π΅ΡΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΊΠ° ΡΠΎΡΠΌΡ, Π² ΠΏΠΎΠ»Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π±ΡΠ΄Π΅Ρ Π²Π²ΠΎΠ΄ΠΈΡΡ ΠΏΠ΅ΡΠ²ΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΡ Π² ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄Π°Ρ , ΡΠ°Π³ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΎΠΌΠΈΡΠ° ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΠΌΠΈΡΠΎΠ² ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ.
```
First delay (ms)
Delay step (ms)
Amount
Create promises```
ΠΠ°ΠΏΠΈΡΠΈ ΡΠΊΡΠΈΠΏΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈ ΡΠ°Π±ΠΌΠΈΡΠ΅ ΡΠΎΡΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ `createPromise(position, delay)` ΡΡΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π²Π΅Π»ΠΈ Π² ΠΏΠΎΠ»Π΅ `amount`. ΠΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΠΉ Π΅ΠΉ Π½ΠΎΠΌΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΎΠΌΠΈΡΠ° `(position)` ΠΈ Π·Π°Π΄Π΅ΡΠΆΠΊΡ ΡΡΠΈΡΡΠ²Π°Ρ Π²Π²Π΅Π΄Π΅Π½Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΏΠ΅ΡΠ²ΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΡ `(delay)` ΠΈ ΡΠ°Π³ `(step)`.
```
function createPromise(position, delay) {
const shouldResolve = Math.random() > 0.3;
if (shouldResolve) {
// Fulfill
} else {
// Reject
}
}
```
ΠΠΎΠΏΠΎΠ»Π½ΠΈ ΠΊΠΎΠ΄ ΡΡΠ½ΠΊΡΠΈΠΈ `createPromise` ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ½Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π»Π° **ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΠΌΠΈΡ**, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠΏΠΎΠ»ΡΠ½Π΅ΡΡΡ ΠΈΠ»ΠΈ ΠΎΡΠΊΠ»ΠΎΠ½ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· `delay` Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΠΌΠΈΡΠ° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΡΠ΄ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° `position` ΠΈ `delay` ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Ρ ΠΏΡΠΎΠΌΠΈΡΠΎΠΌ - Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΈΠ»ΠΈ ΠΎΡΠΊΠ»ΠΎΠ½ΠΈΡΡ.
```
createPromise(2, 1500)
.then(({ position, delay }) => {
console.log(`β Fulfilled promise ${position} in ${delay}ms`);
})
.catch(({ position, delay }) => {
console.log(`β Rejected promise ${position} in ${delay}ms`);
});
```
#### ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ
>:warning: **ΠΠΠΠΠΠΠΠ** ΠΡΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»Π΅Π½ ΠΏΡΠΈ ΡΠ΄Π°ΡΠ΅ Π·Π°Π΄Π°Π½ΠΈΡ, Π½ΠΎ Π±ΡΠ΄Π΅Ρ Ρ ΠΎΡΠΎΡΠ΅ΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΎΠΉ.ΠΠ»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΠΌΠ΅ΡΡΠΎ `console.log()` ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ [notiflix](https://github.com/notiflix/Notiflix#readme).