Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
You don't know Promises - IT Konekt April 2019
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Ivan Jovanovic
April 20, 2019
Technology
80
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
You don't know Promises - IT Konekt April 2019
Ivan Jovanovic
April 20, 2019
More Decks by Ivan Jovanovic
See All by Ivan Jovanovic
Micro Frontends - A microservice approach to the modern web - Oredev 2019
ivanjov
0
100
Micro Frontends - A microservice approach to the modern web - O'Reilly Software Architecture Berlin 2019
ivanjov
0
83
React State - The Good, the Bad and the Ugly - ArmadaJS
ivanjov
0
140
Thinking Reactive in JavaScript - Sphere.it JS Krakow
ivanjov
0
85
Micro Frontends - A microservice approach to the modern web - PHPSrbija
ivanjov
0
220
Micro Frontends - A microservice approach to the modern web - Codemotion Rome 2019
ivanjov
0
360
Mikro Frontendi - Uvod - Novi Sad JS
ivanjov
0
180
Software engineer marketing done right – career tips from my experience.
ivanjov
0
53
Micro Frontends - A microservice approach to the modern web - Full Stack London 2018
ivanjov
0
250
Other Decks in Technology
See All in Technology
新機種発売前に見直そう!端末移行で再ログインが要るアプリ・要らないアプリは何が違うのか 〜シームレスに再開できる設計と実装〜
zozotech
PRO
0
200
Amazon Quick on DesktopがIAM Identity Centerで動かない理由
yukiogawa
0
190
Claude Codeを「使うほど育つ」AI秘書にするノウハウ
minorun365
PRO
29
24k
AI時代、データエンジニアが一番おもろい
genshun9
0
610
空間オーディオで過去の 自分(ゴースト)と競うランニング 〜HealthKitのルートを足音に変える実装〜
nao_randd
0
220
バイブコーディング時代のWebアプリ開発入門~Cloud Runで学ぶセキュアなビルドとデプロイ
waiwai2111
1
130
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
3
510
beyond jj: config & tools ecosystem
indirect
0
450
20260912_スクラムにジェネラリストは必要か
ryugen04
0
420
Railsのように考える: See through the Master
snoozer05
PRO
3
890
OpenTelemetry eBPF Instrumentationの舞台裏 / Behind the Scenes of OpenTelemetry eBPF Instrumentation
ymotongpoo
4
1.3k
Minecraft JavaのMODをSwiftで作る
1mash0
0
160
Featured
See All Featured
My Coaching Mixtape
mlcsv
0
310
The Invisible Side of Design
smashingmag
301
52k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
Done Done
chrislema
186
16k
Fireside Chat
paigeccino
43
4k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
240
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
940
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
RailsConf 2023
tenderlove
30
1.5k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
580
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!