13章非同期JavaScript

科学シミュレーションや機械学習のモデル構築など、コンピュータプログラムの中には計算量が非常に多いものもあります。このようなプログラムは、結果が計算されるまで、止まることなく、連続的に実行されます。しかし、実世界のコンピュータプログラムの多くは非同期的です。データが届くのを待ったり、あるイベントが発生するのを待ったりする間、計算処理を止めるのが普通です。Webブラウザ上のJavaScriptプログラムは、一般的にイベント駆動型です。ユーザが何かをクリックしたり、タップしたりするのを待ちます。また、JavaScriptベースのサーバは、ネットワークからクライアントのリクエストが届くのを待ちます。

このような非同期プログラミングは、JavaScriptでは当たり前のように行われているものです。この章では、非同期なコードを記述しやくするための、重要な3つの機能について解説します。Promiseは、まだ利用できない非同期処理の結果を表すオブジェクトです。このPromiseはES6で新たに追加されたものです。asyncawaitという2つのキーワードはES2017で導入されました。この2つのキーワードを使うことで、非同期プログラミングが簡単になり、Promiseを使ったコードを同期的に記述できるようになります。ES2018では、非同期イテレータとfor/awaitループが追加されています。非同期イベントのストリームを処理するときに、単純なループを使えるようになり、同期的にプログラムを記述できます。

皮肉なことに、JavaScriptには非同期な処理を行うために強力な機能が備わっていますが、JavaScriptプログラム自身を非同期にするような機能はコア言語には含まれていません。このため、Promiseや ...

Get JavaScript 第7版 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.