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
Araya
June 06, 2019
Programming
1
730
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.1k
gotandajs-11-nodejs-recursive-readdir
arayaryoma
2
390
What about Temporal in JavaScript
arayaryoma
5
1.4k
var, let, const and immutable of JavaScript
arayaryoma
0
210
2018-07-31-angular-tips
arayaryoma
1
110
Other Decks in Programming
See All in Programming
開発者体験を変えるInfrastructure as Codeの新機能6選!
konokenj
4
840
『データ可視化学入門』をPythonからRに翻訳した話(増強版)
bob3bob3
0
280
Deno に Web 標準 API を実装する / Implementing Web Standard API to Deno
petamoriken
0
310
before_rails_girls_after_rails_girls
maimux2x
0
300
phpunit/php-code-coverageって何をしてるんだ #phperkaigi
o0h
PRO
2
180
GitHub Copilot Tips and Tricks
yuichielectric
2
220
生成 AI の中身を覗いてみよう〜基礎から医療現場での応用まで〜
soh9834
2
700
Microsoft Fabricを7ヶ月使ってわかったこと
shun_oshidari
2
450
導入から5年が経って見えた Datadog APM 運用の課題
bgpat
1
480
Cloudflare Workersの環境を再現することについて
yusukebe
5
720
mandaRa: R言語ユーザのための新しい知識共有の場 / mandara_tokyor111
s_uryu
2
410
架空のコンペ_スクワットフォーム判別コンペの解法
cpptake
0
420
Featured
See All Featured
Pencils Down: Stop Designing & Start Developing
hursman
115
11k
Agile that works and the tools we love
rasmusluckow
323
20k
Build The Right Thing And Hit Your Dates
maggiecrowley
23
1.9k
In The Pink: A Labor of Love
frogandcode
137
21k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
4
1.4k
Building a Modern Day E-commerce SEO Strategy
aleyda
15
6.3k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3k
Being A Developer After 40
akosma
56
580k
Mobile First: as difficult as doing things right
swwweet
215
8.5k
How GitHub (no longer) Works
holman
301
140k
Building Applications with DynamoDB
mza
88
5.5k
Why You Should Never Use an ORM
jnunemaker
PRO
50
8.5k
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に関しては使えるようになるかかなり怪しい・・・