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
1
63
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
87
Micro Frontends - A microservice approach to the modern web - O'Reilly Software Architecture Berlin 2019
ivanjov
0
71
React State - The Good, the Bad and the Ugly - ArmadaJS
ivanjov
0
120
Thinking Reactive in JavaScript - Sphere.it JS Krakow
ivanjov
0
71
Micro Frontends - A microservice approach to the modern web - PHPSrbija
ivanjov
0
210
Micro Frontends - A microservice approach to the modern web - Codemotion Rome 2019
ivanjov
0
330
Mikro Frontendi - Uvod - Novi Sad JS
ivanjov
0
160
Software engineer marketing done right – career tips from my experience.
ivanjov
0
41
Micro Frontends - A microservice approach to the modern web - Full Stack London 2018
ivanjov
0
230
Other Decks in Technology
See All in Technology
20260305_【白金鉱業】分析者が地理情報を武器にするための軽量なアドホック分析環境
yucho147
1
130
A Gentle Introduction to Transformers
keio_smilab
PRO
1
110
Exadata Fleet Update
oracle4engineer
PRO
0
1.3k
【SLO】"多様な期待値" と向き合ってみた
z63d
2
300
LLM活用の壁を超える:リクルートR&Dの戦略と打ち手
recruitengineers
PRO
1
230
問い合わせ自動化の技術的挑戦
recruitengineers
PRO
2
140
Kaggleで鍛えたスキルの実務での活かし方 競技とプロダクト開発のリアル
recruitengineers
PRO
1
130
AI が Approve する開発フロー / How AI Reviewers Accelerate Our Development
zaimy
1
260
Claude Cowork Plugins を読む - Skills駆動型業務エージェント設計の実像と構造
knishioka
0
250
実録・Platform Engineering 失敗から学び、AI時代の波を乗りこなす技術
sansantech
PRO
1
100
Devinを導入したら予想外の人たちに好評だった
tomuro
0
870
Digitization部 紹介資料
sansan33
PRO
1
7k
Featured
See All Featured
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
450
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
150
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
80
Between Models and Reality
mayunak
2
220
From π to Pie charts
rasagy
0
140
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.1k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.4k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
980
Everyday Curiosity
cassininazir
0
150
Chasing Engaging Ingredients in Design
codingconduct
0
130
The Pragmatic Product Professional
lauravandoore
37
7.2k
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!