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
56
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
76
Micro Frontends - A microservice approach to the modern web - O'Reilly Software Architecture Berlin 2019
ivanjov
0
65
React State - The Good, the Bad and the Ugly - ArmadaJS
ivanjov
0
110
Thinking Reactive in JavaScript - Sphere.it JS Krakow
ivanjov
0
62
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
150
Software engineer marketing done right – career tips from my experience.
ivanjov
0
35
Micro Frontends - A microservice approach to the modern web - Full Stack London 2018
ivanjov
0
220
Other Decks in Technology
See All in Technology
ローカルLLMとLINE Botの組み合わせ その2(EVO-X2でgpt-oss-120bを利用) / LINE DC Generative AI Meetup #7
you
PRO
0
140
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
12
81k
Linux カーネルが支えるコンテナの仕組み / LF Japan Community Days 2025 Osaka
tenforward
1
120
個人でデジタル庁の デザインシステムをVue.jsで 作っている話
nishiharatsubasa
2
3.7k
CNCFの視点で捉えるPlatform Engineering - 最新動向と展望 / Platform Engineering from the CNCF Perspective
hhiroshell
0
130
サイバーエージェント流クラウドコスト削減施策「みんなで金塊堀太郎」
kurochan
4
2.2k
OpenTelemetry が拡げる Gemini CLI の可観測性
phaya72
2
1.9k
混合雲環境整合異質工作流程工具運行關鍵業務 Job 的經驗分享
yaosiang
0
140
AI AgentをLangflowでサクッと作って、1日働かせてみた!
yano13
1
130
AWS UG Grantでグローバル20名に選出されてre:Inventに行く話と、マルチクラウドセキュリティの教科書を執筆した話 / The Story of Being Selected for the AWS UG Grant to Attending re:Invent, and Writing a Multi-Cloud Security Textbook
yuj1osm
1
130
AI-Readyを目指した非構造化データのメダリオンアーキテクチャ
r_miura
1
280
OSSで50の競合と戦うためにやったこと
yamadashy
3
940
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
53
7.8k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
31
2.7k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Building Adaptive Systems
keathley
44
2.8k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
10
880
A Modern Web Designer's Workflow
chriscoyier
697
190k
Into the Great Unknown - MozCon
thekraken
40
2.1k
Why Our Code Smells
bkeepers
PRO
340
57k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.7k
Building Applications with DynamoDB
mza
96
6.7k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.5k
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!