Open1

javascript Promiseを理解し、ググる&コピペから脱却

portgroundportground

はじめに Promiseとは

定義

Promise オブジェクトは、非同期処理の完了 (もしくは失敗) の結果およびその結果の値を表します。
Promise - JavaScript | MDN

そもそも同期、非同期とは?

英語ではそれぞれsyncronous、asynchronousとなる。
同期・非同期と言っても具体的に何を意味するのか。

syncronous、asynchronousの意味

syncronous

同時に起こる
https://ejje.weblio.jp/content/synchronous

asynchronous

同時に起こらない
https://eow.alc.co.jp/search?q=asynchronous

どちらにも出てくる「同時」というキーワード。同時ということは複数の物事が対象になる。

つまり意味を具体的にすると以下の通り。

  • syncronous 複数の物事が同時に起こる
  • asynchronous 複数の物事が同時に起こらない

そして先程のPromiseの定義に当てはめ、私は以下のように解釈しました。
Promise オブジェクトは、同時に行うことを意図しない、他の処理と組み合わせること前提の処理の完了 (もしくは失敗) の結果およびその結果の値を表します。

Promiseは他の処理と組み合わせること前提の処理なので、周囲に自身の状態を伝える機能を持っています。

待機 (pending): 初期状態。成功も失敗もしていません。
履行 (fulfilled): 処理が成功して完了したことを意味します。
拒否 (rejected): 処理が失敗したことを意味します。

Promiseって何でPromise?

非同期処理に用いられることは分かりましたが、なぜPromiseという名前なのでしょうか?Promiseは日本語では「約束」や「保証」となります。