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
JavaScript Promise API in 2019
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Araya
June 06, 2019
Programming
1
860
JavaScript Promise API in 2019
Araya
June 06, 2019
Tweet
Share
More Decks by Araya
See All by Araya
Performance and cache strategy at NIKKEI
arayaryoma
0
2.6k
gotandajs-11-nodejs-recursive-readdir
arayaryoma
2
520
What about Temporal in JavaScript
arayaryoma
5
1.6k
var, let, const and immutable of JavaScript
arayaryoma
0
280
2018-07-31-angular-tips
arayaryoma
1
130
Other Decks in Programming
See All in Programming
モジュラモノリスにおける境界をGoのinternalパッケージで守る
magavel
0
3.4k
株式会社 Sun terras カンパニーデック
sunterras
0
1.9k
new(1.26) ← これすき / kamakura.go #8
utgwkk
0
1.3k
並行開発のためのコードレビュー
miyukiw
2
2.1k
AIとペアプロして処理時間を97%削減した話 #pyconshizu
kashewnuts
1
180
コーディングルールの鮮度を保ちたい / keep-fresh-go-internal-conventions
handlename
0
130
PJのドキュメントを全部Git管理にしたら、一番喜んだのはAIだった
nanaism
0
230
New in Go 1.26 Implementing go fix in product development
sunecosuri
0
120
Premier Disciplin for Micro Frontends Multi Version/ Framework Scenarios @OOP 2026, Munic
manfredsteyer
PRO
0
200
Rails Girls Tokyo 18th GMO Pepabo Sponsor Talk
yutokyokutyo
0
180
CSC307 Lecture 15
javiergs
PRO
0
200
grapheme_strrev関数が採択されました(あと雑感)
youkidearitai
PRO
1
190
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Design in an AI World
tapps
0
160
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.9k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
220
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.4k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
63
Raft: Consensus for Rubyists
vanstee
141
7.3k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
150
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
240
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.6k
Transcript
Promiseͷ෮शͱ༧श あらや @arayaryoma 2019-06-06 Meguro.es # 21 @ ビザスク たぶん初心者向け
自己紹介 あらや / 阿部 凌磨 @arayaryoma @arayaryoma https://araya.dev Web developer
at 株式会社ヘマタイト JavaScript/TypeScript/Go/Kotlin Angular/React/ReactNative/Next.js/Nest.js
Promise API Promise.all Promise.race Promise.reject Promise.resolve Promise.any Promise.allSettled Promise.try Promise.prototype.catch
Promise.prototype.then Promise.prototype.finally
Promise.resolve(value) 引数で渡された値で解決されたPromiseオブジェクトを返す
Promise.reject(reason) 引数で渡された理由(reason)でリジェクトされたPromiseオブジェクトを返す
Promise.prototype.then(onResolved, onRejected) 第1引数に、Promiseが解決されたとき、第2引数にリジェクトされたときに呼ばれる コールバック関数を受け取る。 Promiseを返す。
Promise.prototype.catch(onRejected) Promiseがリジェクトされたときに呼ばれるコールバック関数を引数で受け取る。 Promiseを返す。 .then(undefined, onRejected)と等価。
Promise.prototype.catch(onRejected) Promiseがリジェクトされたときに呼ばれるコールバック関数を引数で受け取る。 Promiseを返す。 .then(undefined, onRejected)と等価。 then͔ΒcatchνΣΠϯͰ͖Δ
Promise.all([…promises]) 引数で渡されたイテレータブルなオブジェクトの中のすべてのPromiseが解決されたら 解決された単一のPromiseを返す。
Promise.all([…promises]) どれか1つでもリジェクトされたら、 そのreject reasonを持ってリジェクトされる。
Promise.race([…promises]) Promiseのイテレータブルなオブジェクトを受け取る。 受け取ったPromiseのうち、 どれか1つでも解決もしくはリジェクトされたら その状態のPromiseを返す。
Promise.prototype.finally(callback) 解決されたかリジェクトされたかにかかわらず、Promiseが確立されたら、 引数で受け取ったコールバック関数が実行される。 Stage4
Promise.prototype.finally(callback) 確立されたらとりあえずなにか処理をして、それからthenとcatchを処理したい。 Stage4 finallyղܾ͘͠ϦδΣΫτ͞ΕͨΛ࣋ͬͨPromiseΛฦ͢
Promise.allSettled([…promises]) Stage3 allと同じく、Promiseのイテレータブルなオブジェクトを受け取る。 すべてのPromiseが解決もしくはリジェクトされるのを待ち、結果を持ったPromiseの配列を返す。
Promise.any([…promises]) Stage1 Promiseのイテレータブルなオブジェクトを受け取る。 受け取ったPromiseのうち、どれか1つでも解決されたら その解決された値をPromiseとして返す。 すべてのPromiseがリジェクトされたら リジェクト理由の配列を返す。
Promise.any([…promises]) Stage1 Promiseのイテレータブルなオブジェクトを受け取る。 受け取ったPromiseのうち、どれか1つでも解決されたら その解決された値をPromiseとして返す。 すべてのPromiseがリジェクトされたら リジェクト理由の配列を返す。
Promise.try(func) Stage1 引数で受け取ったfuncが同期的に例外を吐いてもPromiseがリジェクトされたものとして扱える。 bluebirdから輸入(?) 最終更新は3年前・・・
Promise.try(func) Stage1
Promise.try(func) Stage1
·ͱΊ PromiseのAPIはresolve, reject, then, catch以外にも、 知っていると便利なものがいくつかあります。 これを踏まえてPromiseで非同期処理を書いているコードを見直すと きれいにまとめられる箇所が見つかるかもしれません。 tryに関しては使えるようになるかかなり怪しい・・・