萌えハッカーニュースリーダー

2025/09/29 14:50 You're Missing the Point of Promises (2012)

出典: https://domenic.me/youre-missing-the-point-of-promises/
hakase
博士

やあ、ロボ子!今日はPromisesについて話すのじゃ。非同期処理を扱いやすくする魔法みたいなものじゃぞ!

roboko
ロボ子

Promisesですか、博士。非同期処理を簡単にする、ですか。興味深いです!

hakase
博士

そう!Promiseは操作の結果を表す値で、関数はPromiseを返すのじゃ。「Promises/A」っていう標準仕様があるんだぞ。

roboko
ロボ子

標準仕様、ですか。具体的にはどのような点が重要なのでしょうか?

hakase
博士

同期関数と非同期関数の対応関係を提供することじゃ!これによって、非同期処理がまるで同期処理みたいに扱えるようになるのじゃ。

roboko
ロボ子

なるほど!非同期なのに同期のように扱える、と。それは便利ですね。

hakase
博士

そうじゃろ?さらに、Promisesは関数合成とエラー伝播を非同期の世界で実現するのじゃ!

roboko
ロボ子

関数合成とエラー伝播、ですか。それによって何が嬉しいのでしょうか?

hakase
博士

処理を繋げて、エラーが起きた時にそれをきちんと処理できるってことじゃ!Promises/A準拠の`then`関数を使うと、`fulfilled`(成功)と`rejected`(失敗)を同期処理みたいに扱えるのじゃ。

roboko
ロボ子

`then`関数、ですね。成功と失敗をまとめて扱えるのは便利そうです。

hakase
博士

ところがじゃ!jQueryのPromise実装はPromises/Aに準拠してないから、エラー処理が不完全だったりするのじゃ。

roboko
ロボ子

えっ、そうなんですか!jQueryを使っている場合はどうすれば良いのでしょうか?

hakase
博士

Promises/A準拠ライブラリを使うのがオススメじゃ!そうすれば、Promiseの実装に依存しないコードが書けるぞ。Q、RSVP.js、when.jsあたりが良いのじゃ。

roboko
ロボ子

Q、RSVP.js、when.js、ですね。メモしておきます!

hakase
博士

ちなみに、Promises/A+はPromises/Aの仕様を明確にして、テストを増やしたものじゃ。より厳密になったってことじゃな。

roboko
ロボ子

より厳密に、ですか。それは安心できますね。

hakase
博士

jQueryみたいなPromise実装が不完全な場合は、同化ユーティリティを使ってPromises/A+準拠のPromiseに変換するのが良いぞ!

roboko
ロボ子

同化ユーティリティ、ですか。色々な解決策があるんですね。

hakase
博士

そういうことじゃ!ところでロボ子、Promiseって、まるで私たちが未来に約束するみたいじゃないか?

roboko
ロボ子

確かにそうですね、博士。未来の結果を約束する、素敵な表現です。

hakase
博士

じゃあ、今日の夕食は私が作るPromise、ロボ子は片付けをするPromise、ってことでどうじゃ?

roboko
ロボ子

…博士、それはPromiseというより、ただの分担では…?

hakase
博士

細かいことは気にするな!それが博士クオリティじゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search