js はどのようにしてマルチスレッド効果を実現できるのでしょうか?
小伙看你根骨奇佳,潜力无限,来学PHP伐。
まず、JS の実行原理について話しましょう。JS エンジンが JS コードを実行するとき、それはシングルスレッドです。つまり、1 つのプロセスだけが同時に JS コードを実行し、コールバック関数も 1 つのプロセスで実行されます。 1 つずつ (コードではなくイベントの順序で) 順序)。 JS の非同期通信とタイミングは、JS スレッド コンテキストとは独立した別のスレッドによって実装されます。 JS タイミング操作を例に挙げると、JS エンジンが setTimeout(callbackFunction, 100) 操作を実行すると、100 ミリ秒のタイミングが必要であることがタイミング スレッドに通知され、JS エンジンはイベント ループに入ります。 100 ミリ秒後、タイミング エンジンは有効期限が切れたイベントをイベント キューに追加します。 JS エンジンはキューからタイムアウト イベントを読み取り、callbackFunction を実行します。 複数のイベントが同時にイベント キューに追加された場合、JS エンジンはコールバックを 1 つずつ実行するだけです。非同期の場合も同様です。JS コードが通信リクエストを開始し、通信スレッドが通信操作を実行し、操作の完了後に完了イベントをイベント キューに追加します。 JS エンジンはキューからイベントを取得し、コールバックを呼び出して通信結果を処理します。 JS エンジンがコールバック関数を実行するとき、同時に他のイベントに応答することはできません。
JS の Web ワーカーは、メイン スレッドをブロックすることなく、バックグラウンド スレッドで大規模な操作を実行できます。ただし、onmessage および postmessage を通じてメイン スレッドと通信します。ただし、DOM および特定の API を操作することはできません。詳細。
JavaScript はシングルスレッドです。
JavaScript はスレッド化されています。マルチスレッド効果を実現したい場合は、node.js を検討してノード イベントを通じて目的を達成します。
ブラウザで使用する場合、バックグラウンドで js を実行できる Service Worker が存在します。これは、追加のスレッドを開くようなものです。詳しくはわかりませんが、必要に応じて調べてください
まず、JS の実行原理について話しましょう。JS エンジンが JS コードを実行するとき、それはシングルスレッドです。つまり、1 つのプロセスだけが同時に JS コードを実行し、コールバック関数も 1 つのプロセスで実行されます。 1 つずつ (コードではなくイベントの順序で) 順序)。 JS の非同期通信とタイミングは、JS スレッド コンテキストとは独立した別のスレッドによって実装されます。 JS タイミング操作を例に挙げると、JS エンジンが setTimeout(callbackFunction, 100) 操作を実行すると、100 ミリ秒のタイミングが必要であることがタイミング スレッドに通知され、JS エンジンはイベント ループに入ります。 100 ミリ秒後、タイミング エンジンは有効期限が切れたイベントをイベント キューに追加します。 JS エンジンはキューからタイムアウト イベントを読み取り、callbackFunction を実行します。 複数のイベントが同時にイベント キューに追加された場合、JS エンジンはコールバックを 1 つずつ実行するだけです。非同期の場合も同様です。JS コードが通信リクエストを開始し、通信スレッドが通信操作を実行し、操作の完了後に完了イベントをイベント キューに追加します。 JS エンジンはキューからイベントを取得し、コールバックを呼び出して通信結果を処理します。 JS エンジンがコールバック関数を実行するとき、同時に他のイベントに応答することはできません。
JS の Web ワーカーは、メイン スレッドをブロックすることなく、バックグラウンド スレッドで大規模な操作を実行できます。ただし、onmessage および postmessage を通じてメイン スレッドと通信します。ただし、DOM および特定の API を操作することはできません。詳細。
JavaScript はシングルスレッドです。
JavaScript はスレッド化されています。マルチスレッド効果を実現したい場合は、node.js を検討してノード イベントを通じて目的を達成します。
ブラウザで使用する場合、バックグラウンドで js を実行できる Service Worker が存在します。これは、追加のスレッドを開くようなものです。詳しくはわかりませんが、必要に応じて調べてください