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
Promise完全攻略
Search
kaidouji85
October 14, 2016
Technology
360
0
Share
Promise完全攻略
kaidouji85
October 14, 2016
More Decks by kaidouji85
See All by kaidouji85
AbortControllerでPromiseをキャンセルする
kaidouji85
0
40
一発芸!!なんちゃってローカライズ
kaidouji85
0
110
AWSだけでネット対戦できるブラウザゲームを作った話
kaidouji85
0
85
GitHub CopilotでJavaScript開発効率を爆上げする
kaidouji85
0
130
Serverless + Fargate構成で継続的デリバリーの速度を劇的に改善した話
kaidouji85
0
1k
サーバーレスアーキテクチャこそ"ヘキサゴナルアーキテクチャ"
kaidouji85
0
120
サーバーレスでターンベース制のネット対戦ゲームを作った話
kaidouji85
0
660
CDKで構築したFargateのデプロイ時間を改善した話
kaidouji85
2
590
ブラウザゲームで視聴者参加型のゲーム配信
kaidouji85
0
380
Other Decks in Technology
See All in Technology
LookerとADKで作る社内AIエージェント
chanyou0311
0
260
パーソルキャリア IT/テクノロジー職向け 会社紹介資料|Company Introduction Deck
techtekt
PRO
0
220
続 運用改善、不都合な真実 〜 物理制約のない運用改善はほとんど無価値 / 20260518-ssmjp-kaizen-no-value-without-physical-constraints
opelab
2
240
Swift Sequence の便利 API 再発見
treastrain
1
290
写真で見るAWS Summit Singapore 2026
k_adachi_01
0
110
マンション備え付けのネットワークとLTE回線を組み合わせた ネットワークの安定化の考案
harutiro
1
140
みんなの考えた最強のデータ基盤アーキテクチャ'26前期〜前夜祭〜ルーキーズ_資料_遠藤な
endonanana
0
450
AsyncStreamでマルチブロードキャストを実装する
1mash0
1
120
サンプリングは「作る」のか「使う」のか? 分散トレースのコストと運用を両立する実践的戦略 / Why you need the tail sampling and why you don't want it
ymotongpoo
4
190
Terragrunt x Snowflake + dbt で作るマルチテナントなデータ基盤構築プラットフォーム
gak_t12
0
390
Oracle Cloud Infrastructure presents managed, serverless MCP Servers for Oracle AI Database
thatjeffsmith
1
360
R&D 祭 2024 UE5で絵コンテ・作画の制作支援ツールをつくる話
olmdrd
PRO
0
180
Featured
See All Featured
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
310
We Have a Design System, Now What?
morganepeng
55
8.1k
Why Our Code Smells
bkeepers
PRO
340
58k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Paper Plane
katiecoart
PRO
1
50k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
360
Building AI with AI
inesmontani
PRO
1
990
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.7k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
330
Testing 201, or: Great Expectations
jmmastey
46
8.1k
Un-Boring Meetings
codingconduct
0
290
Transcript
Promiseશ߈ུ ळͷJavaScriptࡇɹin mixi ʙळͷJavaScriptऩ֭ࡇʙ 2016/10/15 ɹ༎հ
ࣗݾհ ɹ༎հ ϓϩάϥϚʔͰ͢ ීஈjavascriptɺ javaͬͯ·͢
ΞδΣϯμ ϓϩϩʔά Promiseͱඇಉظॲཧͷઆ໌ Promiseͷجຊతͳ͍ํ Promiseͷಋೖํ๏ ·ͱΊ
Promiseͱ͍͑ ܅ͨͪͬͺΓ ϓϩϛεͩ Ͱ͕͢
jsͰͷPromiseͱ ඇಉظॲཧΛ εϚʔτʹॻ͘Έ
ͨͩɺॳ৺ऀʹͱͬͯ ϋʔυϧ͕ߴͦ͏ͳͷࣄ࣮
େৎɺ͜ͷػձʹ શ߈ུͪ͠Ό͍·͠ΐ͏
ΞδΣϯμ ϓϩϩʔά Promiseͱඇಉظॲཧͷઆ໌ Promiseͷجຊతͳ͍ํ Promiseͷಋೖํ๏ ·ͱΊ
Promiseͱ ඇಉظॲཧΛεϚʔτʹॻͨ͘ΊͷΈͰ͢ ίʔϧόοΫࠈΛղফͰ͖·͢ ඇಉظ͕ΒΈͷΤϥʔϋϯυϦϯάΛεϚʔτ ʹ͔͚·͢
ඇಉظॲཧͱ processA processB αʔόϦΫΤετͳͲ ͕͔͔࣌ؒΔॲཧ
ඇಉظॲཧͱ processA processB αʔόϦΫΤετͳͲ ͕͔͔࣌ؒΔॲཧ processA(); processB();
ඇಉظॲཧͱ processA processB αʔόϦΫΤετͳͲ ͕͔͔࣌ؒΔॲཧ processA(); processB(); ͜͏ॻ͚ͳ͍
ඇಉظॲཧͱ processA(function() { processB(); }); ࣮ࡍʹ͜͏ॻ͘ processA͕ऴΘͬͨ͋ͱʹ࣮ߦ͢ΔؔΛ͢ ˢ͜͏͍͏ͷΛίʔϧόοΫؔͱ͍͏
ΞδΣϯμ ϓϩϩʔά Promiseͱඇಉظॲཧͷઆ໌ Promiseͷجຊతͳ͍ํ Promiseͷಋೖํ๏ ·ͱΊ
ྫ processA Լਤͷॱ൪ͰɺඇಉظॲཧΛߦ͏ͱ͢Δ ͜ΕΛίʔϧόοΫɺPromiseͰॻ͘ processB processC processD
ίʔϧόοΫͰॻ͍ͨ߹ processA(function() { processB(function() { processC(function() { processD(); }); });
}); ؔΛݺͿͨͼʹωετ͕ਂ͘ͳΔ ͜ΕͰذྫ֎ॲཧ͕ೖΔͱࢮʹͦ͏ ͜͏͍͏ͷΛίʔϧόοΫࠈͱ͍͏
PromiseͰॻ͍ͨ߹ processA() .then(function() { return processB(); }).then(function() { return processC();
}).then(function() { return processD(); }); ωετ1ஈ֊ਂ͘ͳΔ͕ɺͦΕҎ্ਂ͘ͳΒͳ͍ ίʔϧόοΫࠈΛ͋ΔఔࠀͰ͖͍ͯΔ
ൺֱͯ͠Έ·͠ΐ͏ processA(function() { processB(function() { processC(function() { processD(); }); });
}); processA() .then(function() { return processB(); }).then(function() { return processC(); }).then(function() { return processD(); }); Promiseͷํ͕͔Γ͍͢
ΞϩʔؔΛ͏ͱ ͬͱεϚʔτʹͳΔ processA() .then(() => processB()) .then(() => processC()) .then(()
=> processD());
ɹྫ֎ॲཧεϚʔτʹॻ͚Δ processA() .then(() => processB()) .then(() => processC()) .then(() =>
processD()) .catch(() => { //ྫ֎ॲཧ }) ͲͷؔͰྫ֎͕ग़ͯɺcatchʹඈΜͰऴྃ͢Δ try-catchΈ͍ͨͳ͍ํ͕Ͱ͖Δ
ΞδΣϯμ ϓϩϩʔά Promiseͱඇಉظॲཧͷઆ໌ Promiseͷجຊతͳ͍ํ Promiseͷಋೖํ๏ ·ͱΊ
Promiseͷಋೖํ๏ ຆͲͷϒϥβͰඪ४උͯ͠Δ ϥΠϒϥϦΛΠϯετʔϧ͢Δඞཁͳ͠ ͕ؔPromiseΦϒδΣΫτΛฦ͢Α͏ʹ͢Δ fetch apiͳͲൺֱత৽͍͠ͷPromiseΛฦ͢ طଘͷίʔϧόοΫؔܥͷͷΛPromiseԽ͢Δ ํ๏ޙड़
http:/ /caniuse.com/#search=Promise PromiseͷରԠঢ়گ
IEҎ֎…… ·͞ʹ ͱ͍͏ঢ়ଶ ͜ΜͳͷͲ͜ʹͰ ͍ΔͩΖ͏
Ͳ͜ʹͰ͍Δ ܅ͨͪͬͺΓPromiseͩ ૉΒ͍͠ʂʂ
طଘؔΛPromiseԽ // ݩͷؔ function processA(cb) { // ͕͔͔࣌ؒΔॲཧ cb(); }
// PromiseԽ function processAWithPromise() { return Promise((resolve, reject) => { processA(resolve); })); }
طଘؔΛPromiseԽ // PromiseԽ function processAWithPromise() { return Promise((resolve, reject =>
{ processA(resolve); })); } શମΛPromiseͰׅΔ ݩͷؔͷίʔϧόοΫʹresolveΛ͢
༨ஊ
কདྷతʹඇಉظॲཧ ͬͱָʹͳΓ·͢ async function main() { await processA(); await processB();
await processC(); await processD(); } ͍ΘΏΔasyncɺawait
ͨͩ͠asyncɺawaitΛ͏ʹ ͕ؔPromiseΛฦ͢͜ͱ͕݅Ͱ͢ ܅ͨͪͬͺΓ ϓϩϛεͩ
ΞδΣϯμ ϓϩϩʔά Promiseͱඇಉظॲཧͷઆ໌ Promiseͷجຊతͳ͍ํ Promiseͷಋೖํ๏ ·ͱΊ
·ͱΊ PromiseͰඇಉظॲཧΛεϚʔτʹॻ͚Δ PromiseຆͲͷϒϥβͰඪ४උ asyncɺawaitΛ͏ҝʹPromiseԽ͕ඞཁ
͝੩ௌ͋Γ͕ͱ͏ ͍͟͝·ͨ͠