検索条件
全1件
(1/1ページ)
今まで、fetchとかthenとか、他のコードみて雰囲気で使ってたけど、つまるところ、何がどうなってるのか、ざっくりわかっておきたくなったので、今更ながらちょっと勉強した、その備忘メモ。
JavaScriptはシングルスレッドだけど非同期実行の仕組みがある。古くは setTimeout だけど、今はPromiseとThenableなる概念があって、 fetch() とかがこれで実装されている。
Promise と ThenableMDNでは、ある非同期処理Promiseは「待機 (pending) 」「履行 (fulfilled)」「拒否(rejected)」のいずれかの状態を持つと説明される。
意味がとりにくいので、ここではそれぞれを「未完了」「完了:成功」「完了:失敗」とよびかえることにする。
「完了:成功」「完了:失敗」の状態においては、付随して値を持てる。成功時は処理結果を表す実際の値(計算結果など)、失敗時は失敗理由(例外オブジェクトなど)を持たせるのが一般的な使い方と思われる。
C++だと、Promise は std::promise<T>、Thenable が std::future<T>、
C# だと、 Promise が Task<T>、Thenable が IAsyncResult<T> に対応する感じ。