ホームページ  >  記事  >  ウェブフロントエンド  >  イベント駆動型プログラミングでコールバックの Node.js 関数を一時停止するにはどうすればよいですか?

イベント駆動型プログラミングでコールバックの Node.js 関数を一時停止するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-21 17:58:02355ブラウズ

How to Pause Node.js Functions for Callbacks in Event-Driven Programming?

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 サイトの他の関連記事を参照してください。

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