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
ITエンジニアを取り巻く環境とキャリアパス / A career path for Japanese IT engineers
takatama
4
1.8k
インフラが苦手でも大丈夫! 紙芝居 Kubernetes -WWGT 10周年編-
aoi1
1
310
データ分析基盤の信頼を支える視点と設計
yuki_saito
2
760
最低限これだけ押さえれ大丈夫_Claude Enterprise/Team企業展開ガバナンス入門
tkikuchi
1
540
Anthropic AIネイティブ・スタートアップ構築のプレイブック を理解する
nagatsu
0
220
Kiro CLI v2.0.0がやってきた!
kentapapa
0
220
A Harness for Behaviour: how to get AI to generate code that does what we intend, or "TDD in the age of AI"
xpmatteo
1
510
開発を止めない CI/CD ~CI Visibilityによる継続的最適化~
pensuke628
0
200
layerx-fde-practices
cipepser
6
2.9k
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
2.7k
速さだけじゃない! VoidZero ツールが移行先に選ばれる理由
mizdra
PRO
6
680
Generative UI × A2UI で AI エージェントを作った話 AI-DLC も使ってみた!
kmiya84377
1
280
Featured
See All Featured
A better future with KSS
kneath
240
18k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
150
Un-Boring Meetings
codingconduct
0
300
The Language of Interfaces
destraynor
162
26k
Claude Code のすすめ
schroneko
67
220k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
65
55k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
220
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
820
Site-Speed That Sticks
csswizardry
13
1.2k
YesSQL, Process and Tooling at Scale
rocio
174
15k
How to train your dragon (web standard)
notwaldorf
97
6.6k
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!