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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Ivan Jovanovic
April 20, 2019
Technology
67
1
Share
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
94
Micro Frontends - A microservice approach to the modern web - O'Reilly Software Architecture Berlin 2019
ivanjov
0
80
React State - The Good, the Bad and the Ugly - ArmadaJS
ivanjov
0
130
Thinking Reactive in JavaScript - Sphere.it JS Krakow
ivanjov
0
77
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
340
Mikro Frontendi - Uvod - Novi Sad JS
ivanjov
0
170
Software engineer marketing done right – career tips from my experience.
ivanjov
0
46
Micro Frontends - A microservice approach to the modern web - Full Stack London 2018
ivanjov
0
240
Other Decks in Technology
See All in Technology
Kaggle未経験社員をメダリストに育てる「AIドラゴン桜」
lycorptech_jp
PRO
0
660
Claude code Orchestra
ozakiomumkj
2
660
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
2.7k
OpenClawとHermesAgentでAI新入社員を作った話
takanoriyanada
0
140
Javaで学ぶSOLID原則
negima
1
240
AI-DLCを活用した高品質・安全なAI駆動開発実践 / AI Driven Development
yoshidashingo
1
250
自称宇宙最速で不合格となったAIP-C01にリベンジを果たすべくAIで問題集アプリを作ってみた。
yama3133
0
240
Claude Codeを組織で使いこなす— サーバサイドAIエージェント運用の実践知
techtekt
PRO
0
130
管理アカウント単一運用からAWS Organizationsに移行するの大変で滅
hiramax
0
310
『家族アルバム みてね』における インシデント対応との向き合い方 / Approach incident response in Family Album
kohbis
2
270
食べログのサーキットブレーカー導入を振り返って
atpons
1
150
AI フレンドリーなエラー監視を TypeScript で実現する
shinyaigeek
2
190
Featured
See All Featured
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
190
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.7k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Agile that works and the tools we love
rasmusluckow
331
21k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
310
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.2k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
560
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.9k
GitHub's CSS Performance
jonrohan
1033
470k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.2k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
760
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!