Готовим промисы правильно
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
Материалы
Вопросы?

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