JSシングルスレッド非同期ioコールバックの特徴を詳しく解説
JavaScript への最初の接触のほとんどは HTML の js スクリプトから始まりましたが、この一見単純な言語をその原理やメカニズムの一部を理解せずに使用してきました。少なくとも JavaScript のさまざまなイベント コールバックが使用されています。この記事では主に JavaScript のシングルスレッド非同期 IO コールバックの特性を分析します。この内容が参考になれば幸いです。
この処理では、onclick="doCheck()"のようなイベントコールバック関数をdom要素にバインドします。この処理は、dom要素のクリックイベントを登録し、イベントコールバック関数doCheck()をバインドします。マウスがこの要素をクリックすると、イベントがトリガーされ、イベント バインディング関数が即座に実行されて返されます
その後、jquery に触れるようになると、大量の
$("#id").click(function(){ alert('点击事件'); });
が記述されるようになりました。 jquery 構文では、慣れてきたように見えますが、前のセレクターは DOM ノードを選択してフィルターするだけであり、その後のクリックはイベント登録であり、内部の function(){} は実際にはパラメーターであることに気付きます。 、イベント バインディング関数のパラメーター。これには、JavaScript の構文に精通している必要があります。
関数は、世界中のすべてのものを参照できるため、オブジェクトには多くの属性、メソッドを含めることができます。
それはオブジェクトなので、渡すことができます。この種の関数は高階関数と呼ばれます
そして、この種の関数には定義された名前がありません。名前を付けることができ、名前を渡しても同じですが、ここでの関数オブジェクトは実際には仮パラメータであるため、この種の関数には名前を付けないことに慣れています。はよく匿名関数と呼ばれるものです。
上記の $("#id").click に続いて、 click イベントがトリガーされたときに、イベント バインディング関数を実行する必要があります。これは、 を直接与えるのと同じ効果があります。上の dom の onclick メソッド
スクリプトを操作するためにブラウザーに複数のスレッドがあると仮定すると、混乱を想像できますか? スレッド 1 は正しいです。要素 A の値を変更したいのですが、それは予想外でした。スレッド 2 はすでに dom ツリーから要素 A を削除しています。この時点で、スレッド 1 が失敗してエラーが報告されました。これは、ブラウザが複数のスレッドを維持していないため、フロントエンドによってデータの一貫性が維持されている必要があります。エンジニア自身がそうしているので... ブラウザには dom を操作するためのスレッドが 1 つしかないため、多くの不要なトラブルが回避されます
setTimeout(function(){ alert('弹出'); },300); while(true){ ........ }
300 ミリ秒後にアラートが発生すると思いますか?何か楽しいことはありますか?
いいえ、何も楽しいことはありません。ブラウザはシングルスレッド モードでスクリプトを実行するためです。
スレッドが無限ループ モードになると、 while ステートメントを実行すると、setTimeout は何の効果もなくなります
そして、ブラウザの JavaScript の特性であるシングルスレッドの非同期コールバックを完全に保持する、node.js の世界に入りました。それはまさにこの機能のおかげです。それはそれです。node.js が同期言語である場合、すべての npm パッケージを C++ で拡張したとしても (速度は十分に速い)、どんなに速くても C 言語の処理速度には勝てませんよね。 ? それでは、node.js はまだ PHP から軽蔑されているのかもしれません
非同期コールバック IO があるからこそ、効率を向上させることができるのです。学校と学食:
食堂は全生徒が食べる場所です 窓際に皿が並んでいて、食事を作ってくれたお姉さんが1枚ずつ盛り付けて、ご飯を1枚ずつ持ってきて去っていきました。これは同期の結果です
学校のファーストフード レストランでも、生徒たちが注文の列に並んでいますが、注文後は受け取ります。このようにして、ウェイターは多くの人にサービスを提供できます。単位時間内に、食事を注文した生徒は、窓際に立って食事を待つ代わりに、席を見つけて自分の好きなことをすることができます。食事が出てくると、サーバーはそのコードに従ってコードを押します。このとき、テーブル上のポケベルが鳴るので、食事を取りに行くだけです。これは非同期処理です。
単一スレッドにより、リソースの無駄が削減されます。もちろん、マルチコアおよびマルチスレッドのシナリオをサポートするための専用のサードパーティ パッケージもあります。
関連する推奨事項:
以上がJSシングルスレッド非同期ioコールバックの特徴を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Windows オペレーティング システムは世界で最も人気のあるオペレーティング システムの 1 つであり、その新バージョン Win11 が大きな注目を集めています。 Win11 システムでは、管理者権限の取得は重要な操作であり、管理者権限を取得すると、ユーザーはシステム上でより多くの操作や設定を実行できるようになります。この記事では、Win11システムで管理者権限を取得する方法と、権限を効果的に管理する方法を詳しく紹介します。 Win11 システムでは、管理者権限はローカル管理者とドメイン管理者の 2 種類に分かれています。ローカル管理者はローカル コンピュータに対する完全な管理権限を持っています

OracleSQL の除算演算の詳細な説明 OracleSQL では、除算演算は一般的かつ重要な数学演算であり、2 つの数値を除算した結果を計算するために使用されます。除算はデータベース問合せでよく使用されるため、OracleSQL での除算演算とその使用法を理解することは、データベース開発者にとって重要なスキルの 1 つです。この記事では、OracleSQL の除算演算に関する関連知識を詳細に説明し、読者の参考となる具体的なコード例を示します。 1. OracleSQL での除算演算

PHP のモジュロ演算子 (%) は、2 つの数値を除算した余りを取得するために使用されます。この記事では、モジュロ演算子の役割と使用法について詳しく説明し、読者の理解を深めるために具体的なコード例を示します。 1. モジュロ演算子の役割 数学では、整数を別の整数で割ると、商と余りが得られます。たとえば、10 を 3 で割ると、商は 3 になり、余りは 1 になります。モジュロ演算子は、この剰余を取得するために使用されます。 2. モジュロ演算子の使用法 PHP では、% 記号を使用してモジュロを表します。

Linux システム コール system() 関数の詳細説明 システム コールは、Linux オペレーティング システムの非常に重要な部分であり、システム カーネルと対話する方法を提供します。その中でも、system()関数はよく使われるシステムコール関数の一つです。この記事では、system() 関数の使用法を詳しく紹介し、対応するコード例を示します。システム コールの基本概念 システム コールは、ユーザー プログラムがオペレーティング システム カーネルと対話する方法です。ユーザープログラムはシステムコール関数を呼び出してオペレーティングシステムを要求します。

Linuxのcurlコマンドの詳細な説明 要約:curlは、サーバーとのデータ通信に使用される強力なコマンドラインツールです。この記事では、curl コマンドの基本的な使用法を紹介し、読者がコマンドをよりよく理解して適用できるように実際のコード例を示します。 1.カールとは何ですか? curl は、さまざまなネットワーク要求を送受信するために使用されるコマンド ライン ツールです。 HTTP、FTP、TELNETなどの複数のプロトコルをサポートし、ファイルアップロード、ファイルダウンロード、データ送信、プロキシなどの豊富な機能を提供します。

Promise.resolve() の詳細な説明には、特定のコード例が必要です。Promise は、非同期操作を処理するための JavaScript のメカニズムです。実際の開発では、順番に実行する必要があるいくつかの非同期タスクを処理する必要があることがよくあり、満たされた Promise オブジェクトを返すために Promise.resolve() メソッドが使用されます。 Promise.resolve() は Promise クラスの静的メソッドであり、

Golang (Go 言語) には伝統的な意味でのクラスの概念はありませんが、構造体と呼ばれるデータ型が提供され、これによってクラスと同様のオブジェクト指向機能を実現できます。この記事では、構造体を使用してオブジェクト指向機能を実装する方法を説明し、具体的なコード例を示します。構造体の定義と使用法 まず、構造体の定義と使用法を見てみましょう。 Golang では、type キーワードを通じて構造を定義し、必要に応じて使用できます。構造には属性を含めることができます

C++ 関数には、単純関数、const 関数、静的関数、および仮想関数というタイプがあり、インライン関数、デフォルト パラメーター、参照戻り値、およびオーバーロードされた関数などの機能が含まれます。たとえば、calculateArea 関数は π を使用して、指定された半径の円の面積を計算し、それを出力として返します。
