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
0
330
Promise完全攻略
kaidouji85
October 14, 2016
Tweet
Share
More Decks by kaidouji85
See All by kaidouji85
AbortControllerでPromiseをキャンセルする
kaidouji85
0
23
一発芸!!なんちゃってローカライズ
kaidouji85
0
94
AWSだけでネット対戦できるブラウザゲームを作った話
kaidouji85
0
75
GitHub CopilotでJavaScript開発効率を爆上げする
kaidouji85
0
120
Serverless + Fargate構成で継続的デリバリーの速度を劇的に改善した話
kaidouji85
0
960
サーバーレスアーキテクチャこそ"ヘキサゴナルアーキテクチャ"
kaidouji85
0
120
サーバーレスでターンベース制のネット対戦ゲームを作った話
kaidouji85
0
640
CDKで構築したFargateのデプロイ時間を改善した話
kaidouji85
2
560
ブラウザゲームで視聴者参加型のゲーム配信
kaidouji85
0
360
Other Decks in Technology
See All in Technology
Kiro IDEのドキュメントを全部読んだので地味だけどちょっと嬉しい機能を紹介する
khmoryz
0
210
AWS DevOps Agent x ECS on Fargate検証 / AWS DevOps Agent x ECS on Fargate
kinunori
2
140
Oracle AI Database移行・アップグレード勉強会 - RAT活用編
oracle4engineer
PRO
0
110
日本の85%が使う公共SaaSは、どう育ったのか
taketakekaho
1
240
Frontier Agents (Kiro autonomous agent / AWS Security Agent / AWS DevOps Agent) の紹介
msysh
3
190
pool.ntp.orgに ⾃宅サーバーで 参加してみたら...
tanyorg
0
710
Context Engineeringの取り組み
nutslove
0
380
Exadata Fleet Update
oracle4engineer
PRO
0
1.1k
Claude Code for NOT Programming
kawaguti
PRO
1
100
インフラエンジニア必見!Kubernetesを用いたクラウドネイティブ設計ポイント大全
daitak
1
390
データの整合性を保ちたいだけなんだ
shoheimitani
8
3.2k
生成AIと余白 〜開発スピードが向上した今、何に向き合う?〜
kakehashi
PRO
0
150
Featured
See All Featured
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
94
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
1
58
The Cost Of JavaScript in 2023
addyosmani
55
9.5k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
110
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.7k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.8k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.2k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
170
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
380
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Խ͕ඞཁ
͝੩ௌ͋Γ͕ͱ͏ ͍͟͝·ͨ͠