Node.js は、非同期の非常に人気のあるサーバーサイド JavaScript ランタイム環境です。つまり、Node.js アプリケーションを作成するときに非同期イベントを処理する必要があります。 Node.js では、非同期モードは Node.js の効率を高める従来の方法ですが、デバッグが複雑になります。
一部の単純なアプリケーションの場合、開発者は通常、デバッグに console.log() を使用できます。ただし、より複雑なアプリケーションに直面した場合、console.log() ではニーズを満たすことができない場合があります。この場合、Node.js は開発者がデバッグを容易にするためにいくつかの非同期デバッグ メソッドを提供します。
- ブレークポイントの使用
ブレークポイントは、デバッグ ツールで最も一般的に使用される機能の 1 つで、コード行で実行を一時停止できます。 Node.js には、コード内にブレークポイントを簡単に設定するために使用できる、組み込みのブレークポイント デバッグ ツールが用意されています。
まず、ノード検査モジュールをインストールする必要があります:
npm install -g node-inspect
ログイン後にコピー
次に、次のコマンドを使用してノード検査を開始します (アプリケーション エントリ ファイルがapp.js# であると仮定します) ##):
node-inspect app.js
ログイン後にコピー
起動後、コマンドラインは URL を出力します。ブラウザでこの URL を開くと、Chrome デバッグ ツールが表示されます。 Chrome デバッグ ツールの [ソース] パネルで、デバッグするファイルを選択し、コード行をクリックしてブレークポイントを設定できます。アプリケーションがブレークポイントに到達すると、実行が一時停止され、変数の値、コールスタック、その他のデバッグ情報を検査できるようになります。
try...catch ステートメントの使用
Node.js では、try...catch ステートメントは同期コードで例外をキャッチするために使用されるだけではありません。非同期イベントの例外をキャッチするためにも使用できます。前のコードを変換すると (処理される非同期イベントが HTTP リクエストであると仮定して)、次のコードが表示されます。
const http = require('http'); http.createServer((req, res) => { try { // 处理异步事件 } catch (err) { console.log(err); } }).listen(3000);
ログイン後にコピー
非同期イベントが例外を発生させた場合、try...catch ステートメントはキャプチャします。それとそのスタック情報を出力します。
async と await の使用
Async と await は ES2017 で導入され、非同期プログラミングがより自然で理解しやすくなりました。 Node.js では、非同期デバッグに async と await を使用することもできます。
まず、非同期イベントを Promise オブジェクトにカプセル化してから、async と await を使用してそれを処理する必要があります。以下に例を示します。
async function someAsyncFunction() { return new Promise((resolve, reject) => { // 处理异步事件 // 如果出现异常,调用reject() // 如果成功,调用resolve() }); } async function run() { try { const result = await someAsyncFunction(); } catch (err) { console.log(err); } }
ログイン後にコピー
SomeAsyncFunction() は Promise オブジェクトを返します。また、await を使用して非同期イベントの結果を待つことができます。非同期イベントによって例外が発生した場合、try...catch ステートメントはそれをキャッチし、そのスタック情報を出力します。
イベント リスナーの使用
Node.js では、イベント リスナーは非同期イベントの処理に使用できる一般的なパターンです。イベントが発生すると、対応するイベント リスナーをトリガーしてイベントを処理できます。
次は例です:
const EventEmitter = require('events'); class CustomEmitter extends EventEmitter {} const eventEmitter = new CustomEmitter(); eventEmitter.on('someEvent', (data) => { console.log(data); }); eventEmitter.emit('someEvent', 'Hello World');
ログイン後にコピー
ここの CustomEmitter は、イベント リスナー someEvent を定義する Node.js の EventEmitter クラスから継承します。イベントが発生すると、イベント リスナーはイベント.Hello Worldのデータです。
実際のアプリケーションでは、イベント リスナーを使用して非同期イベントを処理することができ、イベントがトリガーされるとイベント リスナーが実行され、関連するデバッグ情報が出力されます。
イベント リスナーを使用する場合は、プログラム内の予期しないエラーを避けるために、非同期イベントの実行順序に注意してください。
概要
Node.js では、非同期イベントの処理は非常に基本的なスキルです。非同期デバッグ方法をマスターすると、開発者が Node.js アプリケーションの非同期イベントをより効果的に処理し、プログラムの信頼性と保守性を向上させることができます。さまざまなシナリオに応じてさまざまな非同期デバッグ方法を選択でき、それらを適切に使用することでデバッグ作業が容易になります。
以上がNodejsの非同期デバッグ方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。