Готовим промисы правильно
MoscowJS 24
Докладчик: Яманов Андрей http://tenphi.me
О чем этот доклад
• Проблемы
• Задачи
• Будущее промисов
2
Promises
callback hell promise heaven3
В чем отличие?Функции doSomething() и doSomethingElse() обе
возвращают промисы.4
#1 Promise hell (pyramid of doom)
Ссылка на GitHub
6
#1 Promise hell (pyramid of doom)
7
#2 Неправильное использование итерирования
8
#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
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
ES7 Async/await
40
41
Проголодались?
В чем отличие?Функции doSomething() и doSomethingElse() обе
возвращают промисы.42
Спасибо за внимание!
http://linkbun.ch/03oyoМатериалы
Вопросы?