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