同期処理と非同期処理

JavaScript の特徴の一つが、非同期処理。 どういうことかという事を整理していこう。

同期処理

PHP や Ruby をはじめとした多くの言語が同期処理。

それぞれの処理を順番に完了へ導くので、一つの処理が終わるまで次の処理は始まらない。 常に実行している処理は一つだけという事。

一本道なのでイメージしやすいかな。

非同期処理

問題は JavaScript を利用した時の非同期処理。

非同期処理では、処理のスタートの切っ掛けだけが順番に与えられて、全て平行で処理される。 なので、処理の終わりを待たずに次の処理が走り始める。

並列処理って完了までの時間を短くできそうで良い感じがするけど、これに丸々従うと、欲しい情報ができあがる前に処理が進んで終わると言う現象が起こる。 これでは困るので...ってことで登場するのが Promise と言う方法だったり ES2017 で登場した asyncawait を利用する方法があるんだけど、それはまた別の話。

ただ、そういうことが起こるって知ってないと、動きが上手くいかないときに理解できないと思うので憶えておこう。

Last updated