Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
You don't know Promises - IT Konekt April 2019
Search
Ivan Jovanovic
April 20, 2019
Technology
1
43
You don't know Promises - IT Konekt April 2019
Ivan Jovanovic
April 20, 2019
Tweet
Share
More Decks by Ivan Jovanovic
See All by Ivan Jovanovic
Micro Frontends - A microservice approach to the modern web - Oredev 2019
ivanjov
0
66
Micro Frontends - A microservice approach to the modern web - O'Reilly Software Architecture Berlin 2019
ivanjov
0
51
React State - The Good, the Bad and the Ugly - ArmadaJS
ivanjov
0
77
Thinking Reactive in JavaScript - Sphere.it JS Krakow
ivanjov
0
43
Micro Frontends - A microservice approach to the modern web - PHPSrbija
ivanjov
0
190
Micro Frontends - A microservice approach to the modern web - Codemotion Rome 2019
ivanjov
0
310
Mikro Frontendi - Uvod - Novi Sad JS
ivanjov
0
130
Software engineer marketing done right – career tips from my experience.
ivanjov
0
27
Micro Frontends - A microservice approach to the modern web - Full Stack London 2018
ivanjov
0
170
Other Decks in Technology
See All in Technology
アクセシビリティを考慮したUI/CSSフレームワーク・ライブラリ選定
yajihum
2
970
MySQL の SQL クエリチューニングの要所を掴む勉強会
andpad
2
4.7k
Google Cloud Next '24でブログを10本書いた方法と勉強会を沸かせた方法
yasumuusan
0
210
カオナビの利用実績をアウトカムへつなげる旅 / example-of-data-management-startup-in-kaonavi
kaonavi
0
130
GraphQL 成熟度モデルの紹介と、プロダクトに当てはめた事例 / GraphQL maturity model
mh4gf
7
1.2k
コードを書く隙間を見つけて生きていく技術/Findy 思考の現在地
fujiwara3
27
5.7k
VS CodeでAWSを操作しよう
smt7174
7
1.5k
NgRx Signal Store
rainerhahnekamp
0
140
Janus
bkuhlmann
1
490
**強い**エンジニアのなり方 - フィードバックサイクルを勝ち取る / grow one day each day
soudai
63
18k
継続的な改善 x ⾮連続的な進化
sansantech
PRO
3
120
複雑な構成要素を持つUIとの向き合い方 〜新・支出グラフでの実例〜 / B43 TECH TALK
nakamuuu
0
130
Featured
See All Featured
Ruby is Unlike a Banana
tanoku
96
10k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
15
1.4k
jQuery: Nuts, Bolts and Bling
dougneiner
59
7.1k
Git: the NoSQL Database
bkeepers
PRO
422
63k
Web Components: a chance to create the future
zenorocha
305
41k
The Cost Of JavaScript in 2023
addyosmani
14
3.8k
Happy Clients
brianwarren
91
6.4k
The Cult of Friendly URLs
andyhume
74
5.7k
No one is an island. Learnings from fostering a developers community.
thoeni
14
2.1k
4 Signs Your Business is Dying
shpigford
175
21k
Building Applications with DynamoDB
mza
88
5.6k
A Philosophy of Restraint
colly
196
16k
Transcript
You don't know Promises
I am Ivan Jovanovic Senior Software Engineer, Tech Speaker You
can find me at @ivanjov96 or https://ivanjov.com Hello! IJ Consulting
Why I don't know Promises?
None
None
I am here today To show you how Promises really
work!
JavaScript is strange because ‒ It was built for 10
days ‒ It has one thread ‒ It is synchronous and asynchronous ‒ It is everywhere ‒ It is different
Only one thread And the event loop
None
How do we handle async code? Promises Callbacks Async/await
Callbacks Where everything began... 1
“ A callback is a function that is passed as
an argument and will be executed after another function has finished executing.
None
None
Promises Changed everything 2
“ The Promise object represents the eventual completion (or failure)
of an asynchronous operation, and its resulting value.
None
None
How Promises really work? The answer is a Microtask queue!
None
Microtask queue ‒ Independent queue ‒ Used by: process.nextTick, Promises,
Object.observe, MutationObserver ‒ Faster than the main queue and may be drained several times in a single event loop tick
None
Next TICK ONE Next TICK TWO TIMEOUT AFTER-ONE TIMEOUT AFTER-TWO
Promise methods ‒ Promise.all(iterable) ‒ Promise.race(iterable) ‒ Promise.resolve(value) ‒ Promise.reject(reason)
Promise.all(iterable)
Rejected situation
Promise.race(iterable)
Promisify non-Promise code
Native Promises from libraries
Async/await Comes to the rescue 3
“ Async/Await is a special syntax for working with Promises.
None
Most common problems with Promises that we see every day!
9
Nested promises 1
None
None
Broken Promise chain 2
None
None
Mixing sync and async code 3
None
None
None
Missing catch 4
None
None
None
Forget to return a Promise 5
None
None
Promisified synchronous code 6
None
Mixing Promise and Async/Await 7
None
None
Async function that returns Promise 8
None
None
None
Define a callback as an async function 9
None
Clinic.js https://clinicjs.org/
Conclusion ‒ JS is crazy and great at the same
time! ‒ Async behavior is a pro, not a con. ‒ Be careful when using Promises, it's great and dangerous at the same time!
Any questions ? You can find me at ‒ @ivanjov96
‒
[email protected]
Thanks!