Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
20251117-slide.pdf
Search
yy05853
November 29, 2025
Programming
10
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
20251117-slide.pdf
yy05853
November 29, 2025
Other Decks in Programming
See All in Programming
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
350
ChromeでローカルLLM
ryu1013
0
140
複雑なUIコンポーネントとの ⻑い付き合い⽅:波及するバグからテスト戦略を経て、安全な再設計へ
mixplace
0
410
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
260
AmebaブログはKMPから卒業します
kmars0605
0
190
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
150
Vue Fes Japan の “作る側”に関わってみて
naokihaba
0
160
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
790
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
190
FactoryBotをやめればRSpecは速くなるのか?
yuta_onishi_97
0
410
R8 の設定見直しでアプリサイズ削減
andpad
0
220
The Rails Doctrine Decade
koic
2
590
Featured
See All Featured
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.9k
Producing Creativity
orderedlist
PRO
348
41k
Ethics towards AI in product and experience design
skipperchong
2
430
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Odyssey Design
rkendrick25
PRO
2
870
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
730
Paper Plane
katiecoart
PRO
5
54k
Intergalactic Javascript Robots from Outer Space
tanoku
273
28k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
330
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
490
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
Transcript
Promise から見るJava とJavaScript の 違い
Promise とは 概要 Promise は、JavaScript で「未来の値」を扱うための仕組み。 Promise オブジェクトを作成すると、 実際に値が返る前の“ 仮の箱”
が作られます。 呼び出し元は結果を待たずに次の処理を進められます。 ( =非同期処理ができる)
コード例1 API 呼び出し fetch("http://localhost:8080/api/holiday") // fetch()はPromiseオブジェクトを返す .then((res) => res.json()) //
then()は非同期処理が成功したときに動く .then((data) => { setHolidays(data); }) .catch((e) => { // catch()は非同期処理が失敗した時に動く setError(e.message); });
内部構造 種類 名前 備考 状態 pending / fulfilled / rejected
進行中・成功・失敗を表す 関数 resolve() / reject() 状態を変更する メソッド then() / catch() / finally() 結果を受け取る処理を登録する
コード例2 Promise オブジェクトを自分で定義する場合 const promise = new Promise((resolve, reject) =>
{ const success = Math.random() > 0.5; // 50%で成功・失敗をランダムに決定する if (success) { resolve("データ取得成功!"); } else { reject("ネットワークエラー!"); } }); promise .then(result => console.log("成功:", result)) // "成功: データ取得成功!" .catch(error => console.log("失敗:", error)); // "失敗: ネットワークエラー!"
ここで疑問 const promise = new Promise((resolve, reject) => { //
略 if (success) { resolve("データ取得成功!"); } else { reject("ネットワークエラー!"); } }); // 略 new Promise() のカッコの中は何をしている?
new Promise() のカッコの中身 まず、 new Promise() のカッコの中身はPromise オブジェクトのコン ストラクタの引数。これはJava と同じ。
1 つ目の違いは、JavaScript ではコンストラクタの引数に関数を与えら れるということ。( コールバック関数) Java でコンストラクタの引数にメソッドを与えることはできない。( メ ソッドを値として扱えないから) 2 つ目の違いは、コンストラクタの引数に書いている関数に引数を与 えられるということ。 この書き方もJava ではできない。
結局、 new Promise() で何をしているのか? 1. new Promise() を呼ぶと、JavaScript エンジンが resolve
と reject という 状態変更関数 を作って、コンストラクタに渡してくれる。 2. 1. で受け取った2 つの関数を使って、非同期処理が成功したときと 失敗したときの動きを定義している この動きは、 「成功/ 失敗時の動作を後から決める」仕組み。 これは、Java のインターフェースを使って「実装を後から決める」仕 組みと似ている。
まとめ:JavaScript とJava の比較 JavaScript Java 動作の渡し方 関数をそのまま渡す インターフェースで実装を 渡す 言語の思想
とりあえず動く、柔 軟 型安全・厳密さ プログラミング 文化 関数を組み合わせる オブジェクトを構成する