SlideShare a Scribd company logo
Готовим промисы правильно
MoscowJS 24
Докладчик:
Яманов Андрей
http://tenphi.me
О чем этот доклад
• Проблемы
• Задачи
• Будущее промисов
2
Promises
callback hell promise heaven
3
В чем отличие?
Функции doSomething() и doSomethingElse() обе
возвращают промисы.
4
5
Проблемы
#1
Promise hell (pyramid of doom)
Ссылка на GitHub
6
#1
Promise hell (pyramid of doom)
7
#2 Неправильное
использование итерирования
8
9
#2 Неправильное
использование итерирования
Используем Promise.all()
10
#3
Забытый .catch()
11
12
Код, где не обрабатываются ошибки
#3
Забытый .catch()
ES6 promises
13
#3
Забытый .catch()
Q promises
14
#4
Повсеместное использование “deferred”
15
Используем хелперы
#4
Повсеместное использование “deferred”
16
ES6 promises
#4
Повсеместное использование “deferred”
17
#5 Игнорирование / Незнание
Promise.resolve() и Promise.reject()
18
#5 Игнорирование / Незнание
Promise.resolve() и Promise.reject()
19
#6 .catch() не совсем то же
самое, что .then(null, …)
=
20
#6 .catch() не совсем то же
самое, что .then(null, …)
≠
21
#7
promise !== promise.then()
22
#7
promise !== promise.then()
23
#8
.then() принимает только функции.
Выведет: “foo”
24
25
Задачи
ES6 Promises это не только
26
ES6 Promises это
27
Решение задач:
Параллельное выполнение
28
Решение задач:
Последовательное выполнение
29
let funcs = массив функций,
создающих и возвращающих промисы.
Решение задач:
Последовательное выполнение
30
Решение задач:
Последовательное выполнение
31
Решение задач:
Последовательное выполнение
32
Решение задач:
Опциональное звено
33
Решение задач:
Отладка
34
Q promises
Решение задач:
Отладка
35
ES6 promises и другие
Решение задач:
Транзакции
36
37
Будущее
промисов
ES7 Async/await
Реализовано через промисы
38
ES6 Promises
39
ES7 Async/await
40
41
Проголодались?
В чем отличие?
Функции doSomething() и doSomethingElse() обе
возвращают промисы.
42
Спасибо за внимание!
http://linkbun.ch/03oyo
Материалы
Вопросы?

More Related Content

PPTX
10 советов, как сделать хороших демонов
PDF
Блокчейн, консенсус - как и зачем? #spblockchain
PDF
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...
PPTX
Джентльменский набор сисадмина / Антон Турецкий (Badoo)
PDF
#10 "Опыт создания Real-time игры на WebGL, Angular, Socket.io и Node.js" Его...
PDF
Docker integration into Badoo
PDF
Мониторь, автоматизируй Docker
PDF
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
10 советов, как сделать хороших демонов
Блокчейн, консенсус - как и зачем? #spblockchain
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...
Джентльменский набор сисадмина / Антон Турецкий (Badoo)
#10 "Опыт создания Real-time игры на WebGL, Angular, Socket.io и Node.js" Его...
Docker integration into Badoo
Мониторь, автоматизируй Docker
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23

What's hot (11)

PDF
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
PPTX
С чем едят JS-дебаггур?!
PPTX
ECS in game development - good software architecture for everyone
PDF
Moscow DevOps meetup 18.05.13
PDF
My slides from DevOps-40 meetup Jun 2019
PDF
My slides from BMM №3 May 2019
PDF
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
PPS
Groovy presentation on Exception #7 conference
PDF
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
PDF
Дмитрий Прокофьев: Эволюция системы синхронизации данных между сервисами
PDF
WebRTC in production
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
С чем едят JS-дебаггур?!
ECS in game development - good software architecture for everyone
Moscow DevOps meetup 18.05.13
My slides from DevOps-40 meetup Jun 2019
My slides from BMM №3 May 2019
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
Groovy presentation on Exception #7 conference
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Дмитрий Прокофьев: Эволюция системы синхронизации данных между сервисами
WebRTC in production
Ad

Viewers also liked (16)

PPT
доклад
PDF
AddConf. Дмитрий Сошников - Будущее ECMAScript
PDF
Обзор ES2015(ES6)
PPT
Подробная презентация JavaScript 6 в 1
PDF
DevConf. Дмитрий Сошников - ECMAScript 6
PDF
Ecma script 6 in action
PPTX
JavaScript-модули "из прошлого в будущее"
PDF
"Как написать компилятор за 15 минут", Андрей Гершун, MoscowJS 24
PDF
HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6
PDF
Дэвид Флэнаган — Javascript (5 издание)
PDF
Классические архитектуры во фронтенде / Александра Шинкевич (LOVATA)
PPTX
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)
PPT
ECMAScript 6: A Better JavaScript for the Ambient Computing Era
PDF
Александр Русаков - TypeScript 2 in action
PDF
ES2015 / ES6: Basics of modern Javascript
PDF
ES6: The Awesome Parts
доклад
AddConf. Дмитрий Сошников - Будущее ECMAScript
Обзор ES2015(ES6)
Подробная презентация JavaScript 6 в 1
DevConf. Дмитрий Сошников - ECMAScript 6
Ecma script 6 in action
JavaScript-модули "из прошлого в будущее"
"Как написать компилятор за 15 минут", Андрей Гершун, MoscowJS 24
HelsinkiJS meet-up. Dmitry Soshnikov - ECMAScript 6
Дэвид Флэнаган — Javascript (5 издание)
Классические архитектуры во фронтенде / Александра Шинкевич (LOVATA)
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)
ECMAScript 6: A Better JavaScript for the Ambient Computing Era
Александр Русаков - TypeScript 2 in action
ES2015 / ES6: Basics of modern Javascript
ES6: The Awesome Parts
Ad

More from MoscowJS (20)

PDF
Виктор Розаев - Как не сломать обратную совместимость в Public API
PDF
Favicon на стероидах
PDF
E2E-тестирование мобильных приложений
PDF
Reliable DOM testing with browser-monkey
PDF
Basis.js - Production Ready SPA Framework
PDF
Контекст в React, Николай Надоричев, MoscowJS 31
PDF
Верстка Canvas, Алексей Охрименко, MoscowJS 31
PDF
Веб без интернет соединения, Михаил Дунаев, MoscowJS 31
PDF
Angular2 Change Detection, Тимофей Яценко, MoscowJS 31
PDF
Создание WYSIWIG-редакторов для веба, Егор Яковишен, Setka, MoscowJs 33
PDF
Предсказуемый Viewport, Вопиловский Константин, KamaGames Studio, MoscowJs 33
PDF
Promise me an Image... Антон Корзунов, Яндекс, MoscowJs 33
PDF
Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...
PDF
"Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter...
PDF
"Во все тяжкие с responsive images", Павел Померанцев, MoscowJS 29
PDF
"AMP - технология на три буквы", Макс Фролов, MoscowJS 29
PDF
"Observable и Computed на пример KnockoutJS", Ольга Кобец, MoscowJS 29
PDF
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28
PDF
"Доклад не про React", Антон Виноградов, MoscowJS 27
PDF
"Web Audio Api", Анатолий Найда, MoscowJS 27
Виктор Розаев - Как не сломать обратную совместимость в Public API
Favicon на стероидах
E2E-тестирование мобильных приложений
Reliable DOM testing with browser-monkey
Basis.js - Production Ready SPA Framework
Контекст в React, Николай Надоричев, MoscowJS 31
Верстка Canvas, Алексей Охрименко, MoscowJS 31
Веб без интернет соединения, Михаил Дунаев, MoscowJS 31
Angular2 Change Detection, Тимофей Яценко, MoscowJS 31
Создание WYSIWIG-редакторов для веба, Егор Яковишен, Setka, MoscowJs 33
Предсказуемый Viewport, Вопиловский Константин, KamaGames Studio, MoscowJs 33
Promise me an Image... Антон Корзунов, Яндекс, MoscowJs 33
Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...
"Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter...
"Во все тяжкие с responsive images", Павел Померанцев, MoscowJS 29
"AMP - технология на три буквы", Макс Фролов, MoscowJS 29
"Observable и Computed на пример KnockoutJS", Ольга Кобец, MoscowJS 29
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28
"Доклад не про React", Антон Виноградов, MoscowJS 27
"Web Audio Api", Анатолий Найда, MoscowJS 27

"Готовим промисы правильно", Андрей Яманов, MoscowJS 24