Node.js でのイベント駆動型関数の実行: コールバックの待機
イベント駆動型プログラミングのコンテキストでは、多くの場合、次のことが必要になります。非同期タスクの完了に依存するルーチンを実行します。 Node.js では、このようなタスクを処理するためにコールバックが頻繁に使用されます。ただし、コールバックが呼び出されるまで関数を「一時停止」することが望ましい場合もあります。
簡略化された関数を考えてみましょう。
function(query) { myApi.exec('SomeCommand', function(response) { return response; }); }
この関数は、関数からの応答を返すことを目的としています。 myApi.exec() 呼び出し。ただし、Node.js はコールバックが実行される前にすぐに戻るため、実装は意図したとおりに機能しません。
この問題を解決する単純な試みには、while ループの使用が含まれる可能性があります。
function(query) { var r; myApi.exec('SomeCommand', function(response) { r = response; }); while (!r) {} return r; }
このアプローチは、コード ブロッキングを導入し、Node.js のイベント駆動型の性質を妨げるため、効果がありません。
Node.js の方法: コールバックを活用する
このシナリオにおける最善の解決策は、コールバック パターンを利用し、実行のブロックを回避することです。戻り値を待つ代わりに、関数は操作の完了時に呼び出されるコールバック パラメーターを受け入れる必要があります。
function(query, callback) { myApi.exec('SomeCommand', function(response) { // Do additional processing if necessary... callback(response); }); }
このアプローチにより、完了を待たずに非同期タスクを実行できます。呼び出し元は、従来の意味での「戻り」値を期待するのではなく、結果のデータを処理するルーチンを指定する必要があります。
myFunction(query, function(returnValue) { // Use the return value here. });
このパターンに従うことで、コードは非ブロッキングでイベント駆動型のままになります。 、Node.js での効率的な実行を保証します。
以上がイベント駆動型プログラミングでコールバックの Node.js 関数を一時停止するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。