Skip to content

Commit f98427f

Browse files
authored
fix: 「非同期処理」における typo 修正 (#1619)
1 parent 8b999c5 commit f98427f

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

source/basic/async/README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ taskB();
104104
## 非同期処理はメインスレッドで実行される {#async-and-main-thread}
105105

106106
メインスレッドはUIスレッドとも呼ばれ、重たいJavaScriptの同期処理はメインスレッドで実行する他の処理(画面の更新など)をブロックする問題について紹介しました。
107-
これは非同期処理においても同様の問題があります。なぜならJavaScriptにおける非同期の大部分はメインスレッドで実行されるためです
107+
これは非同期処理においても同様の問題があります。なぜならJavaScriptにおける非同期処理の大部分はメインスレッドで実行されるためです
108108

109109
非同期処理は名前から考えるとメインスレッド以外で実行されるように見えますが、
110110
基本的には非同期処理も同期処理と同じようにメインスレッドで実行されます。
@@ -153,12 +153,12 @@ taskB();
153153
しかし、実際にはこの非同期処理もメインスレッドで実行された同期的にブロックする処理の影響を受けます。
154154

155155
多くの環境では、このときの非同期処理のコールバック関数が呼ばれるまでは1秒以上かかります。
156-
これは、10ミリ秒後に非同期のコールバック関数を実行するようにタイマーへ登録自体はできていますが、同期的なブロックする処理によって非同期のタスクの実行も後ろにずれてしまうためです
156+
これは、10ミリ秒後に非同期のコールバック関数を実行するようにタイマーへ登録自体はできていますが、同期的にブロックする処理によって非同期のタスクの実行も後ろにずれてしまうためです
157157
このように**非同期処理****同期処理**の影響を受けることから、同じメインスレッドで実行されていることがわかります。
158158

159159
![非同期処理とブロックする同期処理](./img/block--async-single-thread-tasks.png)
160160

161-
JavaScriptでは一部の例外を除き非同期処理が**並行処理(concurrent**として扱われます。
161+
JavaScriptでは一部の例外を除き非同期処理が**並行処理(Concurrent**として扱われます。
162162
並行処理とは、処理を一定の単位ごとに分けて処理を切り替えながら実行することです。
163163
そのため非同期処理の実行前にとても重たい処理があると、非同期処理の実行が遅れるという現象を引き起こします。
164164

@@ -172,7 +172,7 @@ Web Workerではメインスレッドとは異なるWorkerスレッドで実行
172172
そのため、重たい処理をWorkerに移動できるというメリットはありますが、メインスレッドとWorkerスレッドのデータのやり取りに制限があるというトレードオフの関係になります。
173173

174174
このように、非同期処理のすべてをひとくくりにはできませんが、基本的な非同期処理(タイマーなど)はメインスレッドで実行されているという性質を知ることは大切です。JavaScriptの大部分の**非同期処理****非同期的なタイミングで実行される処理**であると理解しておく必要があります。
175-
この書籍で紹介する非同期処理のほとんどは、メインスレッドで処理を切り替えながら実行する**並行処理(concurrent**となっています。
175+
この書籍で紹介する非同期処理のほとんどは、メインスレッドで処理を切り替えながら実行する**並行処理(Concurrent**となっています。
176176

177177
## 非同期処理と例外処理 {#async-processing-and-error-handling}
178178

@@ -1583,7 +1583,7 @@ Async Function外の処理も停止できてしまうと、JavaScriptでは基
15831583
先ほどの`fetchResources`関数ではforループと`await`式を利用していました。
15841584
このときにforループの代わりにArrayの`forEach`メソッドは利用できません。
15851585

1586-
単純に`fetchResources`関数のforループから`Array``forEach`メソッドに書き換えて見ると、構文エラー(`SyntaxError`)が発生してしまいます。
1586+
単純に`fetchResources`関数のforループから`Array``forEach`メソッドに書き換えてみると、構文エラー(`SyntaxError`)が発生してしまいます。
15871587
これは`await`式がAsync Functionの中でのみ利用ができる構文であるためです。
15881588

15891589
<!-- textlint-disable -->
@@ -1692,7 +1692,7 @@ fetchResources(resources).then((results) => {
16921692
### [ES2022] Module直下での`await`式 {#top-level-await-in-module}
16931693

16941694
ES2021までは、`await`式はAsync Functionの直下でのみ利用可能なことを紹介しました。
1695-
ES2022には、これに加えてModuleの直下ではAsync Functionで囲まなくても`await`式が利用できます。
1695+
ES2022では、これに加えてModuleの直下ではAsync Functionで囲まなくても`await`式が利用できます。
16961696

16971697
最初に「[JavaScriptとは][]」の章において、JavaScriptには実行コンテキストとして"Script"と"Module"があるという話をしました。
16981698
たとえば、ブラウザでは`<script>`と書けば"Script"として実行され、`<script type="module">`と書けば"Module"として実行されます。
@@ -1714,7 +1714,7 @@ await new Promise(resolve => setTimeout(resolve, 1000));
17141714
console.log(`実行終了: ${Date.now() - startTime}ms 経過しました`);
17151715
```
17161716

1717-
このようにModuleではトップレベルにおいて`await`式が利用できることは、Top-Level `await`と呼ばれます。
1717+
このようにModuleのトップレベルにおいて`await`式が利用できることは、Top-Level `await`と呼ばれます。
17181718

17191719
ES2021まではAsync Functionの直下のみでしか`await`式が利用できませんでした。
17201720
そのため、メイン処理のように他の処理を呼び出すスクリプトの開始地点で`await`を使いたい場合は、Async Functionを使った即時実行関数で`await`を囲むケースがありました。

0 commit comments

Comments
 (0)