-
Notifications
You must be signed in to change notification settings - Fork 0
Promise through pictures
⏪ |
---|
Промис - это объект-администратор асинхронного процесса
Создается с помощью конструктора Promise
Он ничего не знает о процессе, который администрирует, но знает порядок вызова исполнителей
Ему нужно просто указать исполнителей
Исполнители - это функции
Предположим, вам выслали бандероль
"Новая почта" - функция, которая выполняет доставку бандероли
Она может доставить нам бандероль, а может потерять ( испортить ) отправление
Мы ждем доставку бандероли
Но при этом жизнь не останавливается, и мы не сидим день и ночь на ступеньках отделения "Новой почты"
Мы создаем объект, имеющий состояние - промис 🤖
Состояние объекта-промиса при создании - ожидание ⏳
Этот объект и будет сидеть вместо нас на ступеньках "Новой почты"
Его состояние ⏳ может в любой момент измениться на ✅ или ⛔
Сообщаем ему, какой процесс отслеживать - передаем ему функцию-исполнителя процесса 📮
В этой функции описан процесс, что и откуда должна доставить "Новая почта"
У этой функции есть два формальных параметра ( предположим, в бланке заказа нужно указать номера телефонов, по которым звонить в случае чего )
Эти формальные параметры - часть протокола действий функции-исполнителя при завершении процесса доставки:
📦 кому звонить, если бандероль благополучно доставлена
💥 кому звонить, если бандероль потерялась или испорчена
var 🤖 = new Promise (
function ( 📦, 💥 ) {
...
if ( 👍 ) 📦()
else 💥()
}
)
Итак, формальные параметры 📦, 💥 есть, но их значения пока не определены
Формально процедура описана
Осталось "заключить договор" и заполнить все бланки
В этом месте и подключается наш объект-промис 🤖
Мы должны проинформировать его, 📦 кому звонить, если бандероль благополучно доставлена ( наш сосед дядя Вася 👨⚕️ зайдет получить ее ) 💥 кому звонить, если бандероль потерялась или испорчена ( наш адвокат 👨🏻🎓 займется этой проблемой )
Как сообщить 🤖, что делать?
а у него есть методы then
и catch
, с помощью которых мы и передадим "номера телефонов":
🤖.then ( 👨⚕️ ).catch ( 👨🏻🎓 )
Когда наша посылка будет доставлена, состояние нашего объекта-промиса изменится на ✅ и сработает then
( будет вызван 👨⚕️ )
Если же станет известно, что посылка была испорчена или утеряна, то состояние нашего объекта-промиса станет ⛔ и сработает catch
( будет вызван 👨🏻🎓 )
Таким образом, созданный нами 🤖 - это объект, в который мы "завернули" процесс доставки-получения бандероли, расписав исполнителей, чтобы больше не заморачиваться
var 🤖 = new Promice ( 📮 ( 📦, 💥 ) )
🤖.then ( 👨⚕️ ).then ( 👨🏻🎓 )
где 📦 и 💥 - формальные параметры, значения которых передаются промису 🤖 через then
и catch
- 📦 получит фактическое значение 👨⚕️,
- 💥 получит фактическое значение 👨🏻🎓
⏪ |
---|
Курсы были созданы для студентов A-Level Ukraine.
Использование данных материалов или любой их части коммерческими школами ( курсами ) является нарушением авторских прав.
1 | 2 | 3 | 4 | 5 |
6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 |
⏬ |
---|
- Блок-схема алгоритма
- Developer Tools
- Chrome DevTools
- Переменные
- Оператор typeof
- Структуры данных
- Операторы присваивания
- Логические выражения
- Условные операторы
- Инкремент
- Свойство length
- Оператор цикла for
- UTF-8
Homework
- Нативные и host-объекты
- Литерал объекта
- Унаследованные свойства
- Конструктор
- Модель наследования
- Публичные и приватные свойства
- Оператор in
1
Homework
- Итерирующие методы массивов
- Тестирование производительности
- SHA
Homework
- strict mode
- Вычисляемые имена свойств
- Краткий синтаксис методов
- Краткий литерал объекта
- Классы
Homework
- npm
- webpack
Упражнение 1
- ES6 модули
Упражнение 2
- --mode | --watch
Упражнение 3
Упражнение 4
Упражнение 5
Упражнение 6
Упражнение 7
Упражнение 8
Homework
⏫ |
---|