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
SwiftのAsync / Awaitについて
Search
Takaaki Tanaka
April 14, 2018
Technology
0
200
SwiftのAsync / Awaitについて
第1回 HAKATA.swift ~福岡でSwiftの勉強会~
Takaaki Tanaka
April 14, 2018
Tweet
Share
More Decks by Takaaki Tanaka
See All by Takaaki Tanaka
[デモです] NotebookLM で作ったスライドの例
kongmingstrap
0
350
Zenn のウラガワ ~エンジニアのアウトプットを支える環境で Google Cloud が採用されているワケ~ #burikaigi #burikaigi_h
kongmingstrap
22
8.4k
AWS re:Invent 2024 ふりかえり
kongmingstrap
0
370
製造の課題に立ち向かう Manufacturing Data Engine と Manufacturing Connect の ご紹介
kongmingstrap
0
1.1k
Tellus の衛星データを見てみよう #mf_fukuoka
kongmingstrap
0
850
JAWS-UG 福岡 #16 re:Invent 現地に行った人のお話 #jawsugfuk #jawsug
kongmingstrap
0
670
AppMod の開発のイマを知るために現地に潜入した私が見たものは・・・? #GoogleCloudNext
kongmingstrap
0
760
Kong Gateway から読みとく、 API統合・API連携サービスの最新情報 #devio2023
kongmingstrap
0
2.1k
Cloud Run に憧れて Google Cloud を推進している話 / CX事業本部で使われている技術
kongmingstrap
0
340
Other Decks in Technology
See All in Technology
Kiro Meetup #7 Kiro アップデート (2025/12/15〜2026/3/20)
katzueno
2
260
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
11k
イベントで大活躍する電子ペーパー名札を作る(その2) 〜 M5PaperとM5PaperS3 〜 / IoTLT @ JLCPCB オープンハードカンファレンス
you
PRO
0
210
【AWS】CloudTrail LakeとCloudWatch Logs Insightsの使い分け方針
tsurunosd
0
120
MCPで決済に楽にする
mu7889yoon
0
150
「活動」は激変する。「ベース」は変わらない ~ 4つの軸で捉える_AI時代ソフトウェア開発マネジメント
sentokun
0
110
Blue/Green Deployment を用いた PostgreSQL のメジャーバージョンアップ
kkato1
0
150
Phase01_AI座学_基礎
overflowinc
0
4.5k
君はジョシュアツリーを知っているか?名前をつけて事象を正しく認識しよう / Do you know Joshua Tree?
ykanoh
4
140
GitHub Actions侵害 — 相次ぐ事例を振り返り、次なる脅威に備える
flatt_security
8
5.6k
タスク管理も1on1も、もう「管理」じゃない - KiroとBedrock AgentCoreで変わった“判断の仕事”
yusukeshimizu
0
140
OpenClawでPM業務を自動化
knishioka
1
300
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
340
So, you think you're a good person
axbom
PRO
2
2k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Side Projects
sachag
455
43k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Code Reviewing Like a Champion
maltzj
528
40k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.2k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.5k
Transcript
SwiftͷAsync / Await ʹ͍ͭͯ ୈ1ճ HAKATA.swift
"CPVUNF
wΫϥεϝιουגࣜձࣾ wϞόΠϧΞϓϦαʔϏε෦ wJ04ΞϓϦΤϯδχΞ wαʔόʔαΠυΞϓϦΤϯδχΞ wαʔόʔϨε։ൃ෦ wΞϓϦέʔγϣϯΤϯδχΞ ాத໌ @kongmingtrap
wΫϥεϝιουגࣜձࣾ wϞόΠϧΞϓϦαʔϏε෦ wJ04ΞϓϦΤϯδχΞ wαʔόʔαΠυΞϓϦΤϯδχΞ wαʔόʔϨε։ൃ෦ wΞϓϦέʔγϣϯΤϯδχΞ ాத໌ @kongmingtrap
wΫϥεϝιουגࣜձࣾ wϞόΠϧΞϓϦαʔϏε෦ wJ04ΞϓϦΤϯδχΞ wαʔόʔαΠυΞϓϦΤϯδχΞ wαʔόʔϨε։ൃ෦ wΞϓϦέʔγϣϯΤϯδχΞ ాத໌ @kongmingtrap :".-༑ୡʂʂ
Ϟνϕʔγϣϯ
None
ձࣾͷۚͰߦ͘ ւ֎ΧϯϑΝϨϯε ࠷ߴͩͥʜ
4XJGUͷ "TZOD"XBJUʹ͍ͭͯ
Ϟνϕʔγϣϯ
IUUQTBXTBNB[PODPNKQBCPVUBXTXIBUTOFXBXTMBNCEB TVQQPSUTOPEFKT
IUUQTBXTBNB[PODPNKQBCPVUBXTXIBUTOFXBXTMBNCEB TVQQPSUTOPEFKT
ͳΔ΄Ͳ
4XJGU Ͳ͏ͳ͍ͬͯΔΜͩΖ͏ʁ
"TZOD"XBJUGPS4XJGU
"TZOD"XBJUGPS4XJGU
എܠ
ඇಉظॲཧʹ·ͭΘΔ ՝ͷʑ
"TZOD"XBJUGPS4XJGU
"TZOD"XBJUGPS4XJGU ඇಉظॲཧΛͭͳ͛ཧ߹ ͷίʔϧόοΫࠈ
"TZOD"XBJUGPS4XJGU
"TZOD"XBJUGPS4XJGU ΤϥʔϋϯυϦϯ άͰͷίʔϧόο Ϋࠈ
"TZOD"XBJUGPS4XJGU
"TZOD"XBJUGPS4XJGU ͖݅Ͱඇಉظॲཧ Λ࣮ࢪ͍ͨ͠߹ɺେ ͷ߹ɺίʔυʹ ΫϩʔδϟΛॻ͘͜ͱ ʹͳΔ
"TZOD"XBJUGPS4XJGU
"TZOD"XBJUGPS4XJGU ޙͷॲཧͰHVBSEͳͲͰ ฦΔͷߟྀΛΕͯ͠ ·͏ ͦͦσόοά͠ਏ͍
"TZOD"XBJUGPS4XJGU
"TZOD"XBJUGPS4XJGU ʢϥτφʔࢯͷܦݧଇͱલஔ͖ͭͭ͠ʜʣ ඇಉظ"1*Λ࡞ͬͯɺଟ͘ͷ߹6*ͷߋ৽ͳͲ ͕བྷΉͨΊɺಉظಈ࡞Ͱߦ͏͜ͱ͕ଟ͍
"TZOD"XBJUGPS4XJGU
"TZOD"XBJUGPS4XJGU ࠶։ՄೳͳॲཧΛඳ͖͍ͨ࣌ɺ4XJGUͷ߹ͩͱɺ ஈ֊తʹΛੜ͢ΔͷΛͱͯ͠ఆٛ͢Δඞཁ͕ ͋Δ
"TZOD"XBJU
wඇಉظॲཧͷߏจ w1SPNJTFΛ؆ܿʹهड़Ͱ͖ΔΑ͏ʹͨ͠ w༷ʑͳݴޠʹΤοηϯε͕औΓࠐ·Ε͍ͯ Δʢ+BWB4DSJQUɺ$ɺ1ZUIPOɺ3VTUʜʣ "TZOD"XBJU
ଞͷݴޠͷඇಉظॲཧ
wඇಉظॲཧͷ࠷ऴతͳࣦྃ͘͠ഊΛ ද͢ΦϒδΣΫτ w݁ՌΛUIFOϝιουͳͲͰνΣΠϯͤ͞Δ 1SPNJTF
1SPNJTF doSomething().then(function(result) { return doSomethingElse(result); }) .then(function(newResult) { return doThirdThing(newResult);
}) .then(function(finalResult) { console.log('Got the final result: ' + finalResult); }) .catch(failureCallback);
wऴ͍ྃͯ͠Δ͔Ͳ͏͔Θ͔Βͳ͍ॲཧ݁Ռ ΛநԽͨ͠ܕ w'VUVSFະདྷͷ݁ՌΛද͢ܕ wจࣈ௨Γɺ૬खʢॲཧ͢Δଆʣʹʮະདྷʯ Λୗ͢ 'VUVSF
'VUVSF val f: Future[List[String]] = Future { session.getRecentPosts } f
onFailure { case t => println("Τϥʔ͕ൃੜͨ͠: " + t.getMessage) } f onSuccess { case posts => for (post <- posts) println(post) }
wඇಉظͰฦ͞ΕΔΛड͚ΔͨΊͷߏจ "XBJU function resolveAfter2Seconds(x) { return new Promise(resolve => {
setTimeout(() => { resolve(x); }, 2000); }); } async function f1() { var x = await resolveAfter2Seconds(10); console.log(x); // 10 } f1();
wඇಉظͰΛฦ͢͜ͱΛ໌ࣔ͢Δߏจ "TZOD GVODUJPOSFTPMWF"GUFS4FDPOET \ SFUVSOOFX1SPNJTF SFTPMWF\ TFU5JNFPVU \ SFTPMWF SFTPMWFE
^ ^ ^ BTZODGVODUJPOBTZOD$BMM \ DPOTPMFMPH DBMMJOH WBSSFTVMUBXBJUSFTPMWF"GUFS4FDPOET DPOTPMFMPH SFTVMU FYQFDUFEPVUQVUSFTPMWFE ^ BTZOD$BMM
"TZOD function resolveAfter2Seconds(x) { return new Promise(resolve => { setTimeout(()
=> { resolve(x); }, 2000); }); } async function add1(x) { const a = await resolveAfter2Seconds(20); const b = await resolveAfter2Seconds(30); return x + a + b; } add1(10).then(v => { console.log(v); // 4ඵޙʹ60Λදࣔ͠·͢ɻ });
4XJGUͰ ࣮ݱ͠Α͏ͱ͢Δͱ
"TZOD"XBJUGPS4XJGU "TZODͷߏจʹ͍ͭͯ
"TZOD"XBJUGPS4XJGU "XBJUͷߏจʹ͍ͭͯ
"TZOD"XBJUGPS4XJGU #FGPSF
"TZOD"XBJUGPS4XJGU "GUFS
✌ Т✌ ࡾ✌ Т ✌ࡾ ✌Т ✌
"TZOD"XBJUGPS4XJGU 'VUVSF
"TZOD"XBJUGPS4XJGU 'VUVSF
͍͔ͭΒ͑Δʁ
"TZOD"XBJUGPS4XJGU
None
IUUQTRJJUBDPNLPIFSJUFNTCFBFD
None
$PODVSSFODZJO 4XJGU0OFBQQSPBDI
$PODVSSFODZJO4XJGU0OFBQQSPBDI
IUUQTXXXTMJEFTIBSFOFUZVHPMGQSFQBSJOHGPSEJTUSJCVUFETZTUFNGBJMVSFT VTJOHBLLBTDBMBNBUTVSJ
None
"QQFOEJY
w "TZOD"XBJUGPS4XJGU w $PODVSSFODZJO4XJGU0OFBQQSPBDI w 1SPQPTBMʹࡌ͍ͬͯͳ͍4XJGUͷBTZODBXBJU͕ૉΒ͠ ͍ͱࢥ͏ཧతഎܠ w "LLBJO"DUJPOXPSLTIPQ4DBMB.BUTVSJ w
1SFQBSJOHGPSEJTUSJCVUFETZTUFNGBJMVSFTVTJOHBLLB 4DBMB.BUTVSJ ࢀߟจݙ
None