2023/05/08(Mon)JavaScript 非同期処理

はてブ数 2023/05/08 0:08 Web開発 つーさ

今まで、fetchとかthenとか、他のコードみて雰囲気で使ってたけど、つまるところ、何がどうなってるのか、ざっくりわかっておきたくなったので、今更ながらちょっと勉強した、その備忘メモ。

JavaScript 非同期処理

JavaScriptはシングルスレッドだけど非同期実行の仕組みがある。古くは setTimeout だけど、今はPromiseThenableなる概念があって、 fetch() とかがこれで実装されている。

PromiseThenable

MDNでは、ある非同期処理Promiseは「待機 (pending) 」「履行 (fulfilled)」「拒否(rejected)」のいずれかの状態を持つと説明される。

意味がとりにくいので、ここではそれぞれを「未完了」「完了:成功」「完了:失敗」とよびかえることにする。

「完了:成功」「完了:失敗」の状態においては、付随して値を持てる。成功時は処理結果を表す実際の値(計算結果など)、失敗時は失敗理由(例外オブジェクトなど)を持たせるのが一般的な使い方と思われる。

C++だと、Promisestd::promise<T>Thenablestd::future<T>、 C# だと、 PromiseTask<T>ThenableIAsyncResult<T> に対応する感じ。

続きを読む