js シングルスレッド
js はシングルスレッドであり、ユーザーの操作や DOM 操作に役立ちます。プロセスとスレッドの詳細については、ポータルをクリックしてください。Webworker はマルチスレッドを実現できます。ウェブワーカーによって作成されたスレッドは、メイン スレッドによって制御され、
js 同期、
同期実行: つまり、js メイン スレッドはタスクを順番に実行し、待機します。 WebAPI/ajax およびその他のコードを操作するときの応答 次のコードは実行できません。つまり、次のタスクは前のタスクが完了するまで待機する必要があります。
非同期実行: js はシングルスレッドであり、非同期機能がありません。ブラウザは、js が実行されると、WebAPI (setTimeout/ajax など) に遭遇し、すぐに値を返すため、メインスレッドをブロックせず、完了後にブラウザによって実際の非同期が実行されます。コールバック関数は、js メインスレッドのメッセージキューにプッシュされ、メインスレッドが呼び出すのを待ちます。
イベントループメカニズム [イベントループ]
js が実行されると、そのメインスレッドには実行スタック [個人的にコールと呼ばれます] が存在します。スタック] (スタック) とメッセージ キュー [タスク キューまたはイベント キューとも呼ばれます] (イベント キュー); js が関数に遭遇すると、その関数はスタックにプッシュされ、関数の実行後にポップアウトされます。実行スタックを呼び出して実行します。WebAPI が見つかった場合は非同期で実行され、実行スタックにタスクがない場合は、メインスレッドがメッセージをクエリします。クエリが成功すると、クエリされたタスクが実行されます。実行スタックが空になるまで実行のためにスタックにプッシュされ、メッセージ キューが再度クエリされます。これは有名なイベント ループ [イベント ループ] であり、非同期実行はブラウザによって簡単に完了します。 js スレッドがブロックされているときに DOM イベントを操作すると、スレッドが復元された後に順番に実行される理由を理解するには、[js メイン スレッドのタスク キューがブラウザによってプッシュされ、js スレッドがブロックされます。ブロックされている、つまりメインスレッドはタスクキューにタスクをプッシュすることを妨げません。
// 主线程执行fn1任务 1function fn1(){ console.log("任务1执行")// 遇到webAPI立即返回 这里是undefined值 并交给浏览器对应线程处理 2 // 浏览器收到后 0 毫秒将回调函数推入消息列队; 异步执行setTimeout(function(){// 查询到一个回调任务 入栈执行 5console.log("回调1执行")// 遇到webAPI立即返回 这里是undefined值 并交给浏览器对应线程处理 6 // 浏览器收到后 500 毫秒将回调函数推入消息列队; 异步执行setTimeout(function(){// 查询到一个回调任务 入栈执行 7console.log("回调2执行") },500) },0) }// 主线程执行fn2任务 3function fn2(){console.log("任务2执行")}// 执行栈没有可执行任务 开始查询消息列队 4マクロタスクとマイクロタスク 2 つのタイプ、つまり Macrotasks[Task Queue] と Microtasks[Microtasks Queue ]
macrotasks:
setTimeout
、setInterval
、setImmediate
>、I/O、UI レンダリングsetTimeout
,setInterval
,setImmediate
, I/O, UI renderingmicrotasks:
process.nextTick
,Promises
,Object.
MutationObserver
: process.nextTick
、Promises
、Object.
MutationObserver<strong></strong>
console.log(170 Promise(89100 Promise(34562); // 1 2 3 4 5 6 7 8 9 10
上記コードの実行処理:
js はコンソール 1 を実行します。 setTimeout に遭遇すると非同期実行に変更され、再度 setTimeout に遭遇すると再び非同期で実行され、その後、実行が Promise に遭遇すると、それが実行されます。 microtasks タイプのタスク キューにプッシュされ、コンソール 2 が実行されます。この時点で、実行スタックは空です。メッセージ キューをクエリするには、まず microtasks をクエリして、実行可能なタスクがあることを確認します。実行のためにスタックにプッシュされ、それに応じて 3 4 5 6 が出力されます [マイクロタスクが空でないことが判明する限り、空になるまで実行されます]; メッセージ キューを再度クエリします。現時点では、microtasks キューには実行するタスクがありません。次に、macrotasks キューをクエリして、実行を待機している setTimeout コールバックを見つけて、実行のためにスタックにプッシュし、キューを再度クエリします。この時点では、microtasks キューにはまだタスクがありません。次に、macrotasks キューをクエリして、実行を待機している setTimeou コールバックを見つけます。promise が microtasks キューにプッシュされていることを確認します。スタックに戻ると、実行スタックは再び空になります。メッセージ キューをクエリして、microtasks に実行可能なタスクがあることを確認します。この時点で、メイン スレッドは待機状態になります。
以上がJavaScriptイベントループの強制ソートの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PythonまたはJavaScriptの選択は、キャリア開発、学習曲線、エコシステムに基づいている必要があります。1)キャリア開発:Pythonはデータサイエンスとバックエンド開発に適していますが、JavaScriptはフロントエンドおよびフルスタック開発に適しています。 2)学習曲線:Python構文は簡潔で初心者に適しています。 JavaScriptの構文は柔軟です。 3)エコシステム:Pythonには豊富な科学コンピューティングライブラリがあり、JavaScriptには強力なフロントエンドフレームワークがあります。

JavaScriptフレームワークのパワーは、開発を簡素化し、ユーザーエクスペリエンスとアプリケーションのパフォーマンスを向上させることにあります。フレームワークを選択するときは、次のことを検討してください。1。プロジェクトのサイズと複雑さ、2。チームエクスペリエンス、3。エコシステムとコミュニティサポート。

はじめに私はあなたがそれを奇妙に思うかもしれないことを知っています、JavaScript、C、およびブラウザは正確に何をしなければなりませんか?彼らは無関係であるように見えますが、実際、彼らは現代のウェブ開発において非常に重要な役割を果たしています。今日は、これら3つの間の密接なつながりについて説明します。この記事を通して、JavaScriptがブラウザでどのように実行されるか、ブラウザエンジンでのCの役割、およびそれらが協力してWebページのレンダリングと相互作用を駆動する方法を学びます。私たちは皆、JavaScriptとブラウザの関係を知っています。 JavaScriptは、フロントエンド開発のコア言語です。ブラウザで直接実行され、Webページが鮮明で興味深いものになります。なぜJavascrを疑問に思ったことがありますか

node.jsは、主にストリームのおかげで、効率的なI/Oで優れています。 ストリームはデータを段階的に処理し、メモリの過負荷を回避します。大きなファイル、ネットワークタスク、リアルタイムアプリケーションの場合。ストリームとTypeScriptのタイプの安全性を組み合わせることで、パワーが作成されます

PythonとJavaScriptのパフォーマンスと効率の違いは、主に以下に反映されています。1)解釈された言語として、Pythonはゆっくりと実行されますが、開発効率が高く、迅速なプロトタイプ開発に適しています。 2)JavaScriptはブラウザ内の単一のスレッドに限定されていますが、マルチスレッドおよび非同期I/Oを使用してnode.jsのパフォーマンスを改善でき、両方とも実際のプロジェクトで利点があります。

JavaScriptは1995年に発信され、Brandon Ikeによって作成され、言語をCに実現しました。 2。JavaScriptのメモリ管理とパフォーマンスの最適化は、C言語に依存しています。 3. C言語のクロスプラットフォーム機能は、さまざまなオペレーティングシステムでJavaScriptを効率的に実行するのに役立ちます。

JavaScriptはブラウザとnode.js環境で実行され、JavaScriptエンジンに依存してコードを解析および実行します。 1)解析段階で抽象的構文ツリー(AST)を生成します。 2)ASTをコンパイル段階のバイトコードまたはマシンコードに変換します。 3)実行段階でコンパイルされたコードを実行します。

PythonとJavaScriptの将来の傾向には、1。Pythonが科学コンピューティングの分野での位置を統合し、AI、2。JavaScriptはWebテクノロジーの開発を促進します。どちらもそれぞれのフィールドでアプリケーションシナリオを拡大し続け、パフォーマンスをより多くのブレークスルーを行います。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。
