ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript_javascript スキルの同期と非同期について簡単に説明します

JavaScript_javascript スキルの同期と非同期について簡単に説明します

WBOY
WBOYオリジナル
2016-05-16 15:22:361155ブラウズ

1. 手書きで絵を描いて説明します。

2. JavaScript がシングルスレッドである理由 (これは教師 Ruan Yifeng からの引用です)

JavaScript の単一スレッドはその目的に関連しています。

ブラウザのスクリプト言語としての JavaScript の主な目的は、ユーザーと対話し、DOM を操作することです。

これにより、シングルスレッドのみが可能であることが決定されます。そうでない場合は、非常に複雑な同期の問題が発生します。

たとえば、JavaScript に同時に 2 つのスレッドがあるとします。1 つのスレッドが特定の DOM ノードにコンテンツを追加し、もう 1 つのスレッドがそのノードを削除するとします。この場合、ブラウザはどちらのスレッドを使用する必要がありますか?

複雑さを避けるために、JavaScript は誕生以来シングルスレッドであり、これがこの言語の中心的な機能となっており、今後も変更されることはありません。

マルチコア CPU の計算能力を活用するために、HTML5 は Web Worker 標準を提案しています。これにより、JavaScript スクリプトは複数のスレッドを作成できますが、子スレッドはメインスレッドによって完全に制御され、子スレッドを操作してはなりません。ドム。

つまり、この新しい標準は JavaScript のシングルスレッドの性質を変えるものではありません。

ポータル: JavaScript 動作メカニズムのイベント ループの詳細な説明

3. JavaScript の非同期の性質はどこにありますか

冒頭の図のように、左側のメインスレッドが同期、左側のイベントキュー(メッセージキュー)が非同期だと個人的には考えています。

もちろん、JavaScript には多くの非同期があります:

Ajax(XMLHttpRequest)
Image Tag,Script Tag,iframe(原理类似)
setTimeout/setInterval
CSS3 Transition/Animation
postMessage
Web Workers
Web Sockets
and more…

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。