はじめに
- 私はフロントエンド開発にAngularを利用している。
- Anugularの大きなメリットは「非同期処理」と聞いたことがある。
- 概念的にはわかるが、実際Angularの実装部分で非同期処理がどう効いているかがわからない。
- 正直、言われるがまま使っており、その恩恵を感じられていない。
- 改めて、同期処理・非同期処理を調べてみた。
同期処理(Synchronous)
- 「プログラム」を上から実行する。
- 今の処置が終わるまで次の処理が始まらない。
- シングルスレッドで一つのプログラムを実行する感じ。
非同期処理(Asynchronous)
- ある処理中、それを止めることなく、別の処理を実行する。
- JavaScriptではAjax(Asynchronous JavaScript and XML)という技術を用いた非同期処理が有名。
- 同時に実行しているわけではなく、待ってる間に次を始めるというのが肝
- JavaScripの非同期処理は並列処理を使って並列処理のように振る舞っている。(おそらく)
- 並行処理(Concurrent):処理を一つ一つ実行する→高速に切り替えることで"同時に"行っているように見える。
- 並列処理(Parallel):処理を同時に実行する。
非同期処理の利点
- 非同期処理の最大の利点は、「ユーザビリティの向上」です。
- GoogleMapでは座標の移動、周辺情報の読み込みを非同期で行っているため、スムーズに動きます。
- Amazonではあるページを見ながら、リンクされたページを非同期で読み込んでいるため、スムーズに動きます。
終わりに
- 次回以降の記事で、非同期処理を実装を交えて語りたい。
- 解説できるようにしたいこと
- promise
- rxjsのObservable、BehaviorSubject
- async, await (pythonでも扱いたい)
- 正直、非同期処理、並行処理、並列処理、マルチスレッドの区別をまだ上手く説明できない。