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
Ivan Jovanovic
April 20, 2019
Technology
87
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
Transcript
64 slides
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!
More Decks by Ivan Jovanovic
See All by Ivan Jovanovic
Micro Frontends - A microservice approach to the modern web - Oredev 2019
ivanjov
0
110
Micro Frontends - A microservice approach to the modern web - O'Reilly Software Architecture Berlin 2019
ivanjov
0
93
React State - The Good, the Bad and the Ugly - ArmadaJS
ivanjov
0
140
Thinking Reactive in JavaScript - Sphere.it JS Krakow
ivanjov
0
91
Micro Frontends - A microservice approach to the modern web - PHPSrbija
ivanjov
0
230
Micro Frontends - A microservice approach to the modern web - Codemotion Rome 2019
ivanjov
0
360
Mikro Frontendi - Uvod - Novi Sad JS
ivanjov
0
190
Software engineer marketing done right – career tips from my experience.
ivanjov
0
62
Micro Frontends - A microservice approach to the modern web - Full Stack London 2018
ivanjov
0
260
Other Decks in Technology
See All in Technology
Active Directory と Entra ID のむむむな関係
murachiakira
PRO
4
1.8k
Sonnetだけで業務はまわる?
kintotechdev
1
110
高品質と高スピードを支える品質のシフトレフトのアプローチ
goyoki
2
580
ゼロから作るWebアプリの新定番!?Amplify Gen 2 × AWS Blocksで実現する「開発速度とRDBの柔軟性のいいとこ取り」
amixedcolor
1
240
AIが会計業務の伴走者に。 マネーフォワード クラウド会計MCPサーバーで実現するAI前提の新しい業務プロセス
nobitabashi
0
110
プロダクションコードにおける encoding/json から encoding/json/v2 へのスムーズな移行
sansantech
PRO
1
400
「AIチャットからもできないの?」と言われたら ~業務アプリをMCP対応するときの認証・認可の勘所
oidfj
0
320
小さなエージェントから始めてみよう!実践コンテキストエンジニアリング
iwamot
PRO
0
110
20261113_JAWS_Osaka
takuyay0ne
0
210
サボる子はいねぇがー!AgentCoreハーネスの脆弱性に学ぶ、エージェントの入力バリデーション
iwamot
PRO
5
330
業務でAWSをあまり使っていない私が、AWSへのモチベを保つ方法
smt7174
0
190
複数システムが同居した 15 年物の AWS アカウントを解体するための考古学
wa6sn
3
140
Featured
See All Featured
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
520
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
370
Faster Mobile Websites
deanohume
310
32k
How STYLIGHT went responsive
nonsquared
100
6.4k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
380
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
310
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
610
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
1.1k
The Pragmatic Product Professional
lauravandoore
37
7.5k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Utilizing Notion as your number one productivity tool
mfonobong
4
640
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
70
69k