[解決済み】node.jsでコールバックが呼ばれるまで関数を待機させる方法
2022-03-29 13:16:58
質問
次のような簡易的な関数があります。
function(query) {
myApi.exec('SomeCommand', function(response) {
return response;
});
}
基本的に、私はそれが呼び出したい
myApi.exec
そして、コールバックラムダで与えられた応答を返します。しかし、上記のコードは動作せず、単に即座に返されます。
非常にハック的な試みとして、以下のようなものを試しましたが、うまくいきませんでした。
function(query) {
var r;
myApi.exec('SomeCommand', function(response) {
r = response;
});
while (!r) {}
return r;
}
基本的に、良い「node.js/イベントドリブン」な方法は何でしょうか?私は、コールバックが呼び出されるまで私の関数が待機し、その後、それに渡された値を返したい。
解決するには?
node.js /event driven"な方法は、以下の通りです。 待たない .
nodeのようなイベント駆動型システムで作業するときのほとんどすべてのものと同様に、あなたの関数は、計算が完了したときに呼び出されるコールバックパラメータを受け入れる必要があります。呼び出し側は、通常の意味での「quot;return" 」が返されるのを待つのではなく、結果の値を処理するルーチンを送信する必要があります。
function(query, callback) {
myApi.exec('SomeCommand', function(response) {
// other stuff here...
// bla bla..
callback(response); // this will "return" your value to the original caller
});
}
ということは、こんな使い方はしないんですね。
var returnValue = myFunction(query);
しかし、このように
myFunction(query, function(returnValue) {
// use the return value here instead of like a regular (non-evented) return value
});
関連
-
[解決済み】このエラーの原因は何ですか - "Fatal error: ローカルgruntを見つけることができません"
-
[解決済み】TypeError: $(...).DataTable は関数ではありません。
-
[解決済み】Reactのeslintエラーはpropsの検証で見つからない
-
[解決済み】エラー:リスン EACCES 0.0.0.0:80 OSx Node.js
-
[解決済み] ローカルファイルを開くことができません - Chrome: ローカルリソースのロードが許可されていません
-
[解決済み] Node.jsを使用してディレクトリが存在しない場合に作成する方法
-
[解決済み] Node.JSを使用して、JSONファイルを(サーバー)メモリに読み込むにはどうすればよいですか?
-
[解決済み] Node.jsで "Cannot find module "エラーを解決するにはどうしたらいいですか?
-
[解決済み] 非同期関数+await+setTimeoutの組合せ
-
[解決済み】JavaScriptのクロージャと無名関数の比較
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Heroku:ノードアプリで「このアプリにはデフォルトの言語が検出されませんでした」エラーがスローされる
-
[解決済み] Uncaught TypeError: 未定義のプロパティ 'top' を読み込めない
-
[解決済み] Uncaught Invariant Violation: 前のレンダリング中よりも多くのフックをレンダリングした
-
[解決済み】ある要素が可視DOMに存在するかどうかを確認するにはどうすればいいですか?
-
[解決済み】SyntaxError: 'import' と 'export' は 'sourceType: module' とだけ表示されるかもしれない - Gulp
-
[解決済み】WebpackとBabelで「このファイルタイプを扱うには適切なローダーが必要な場合があります。
-
[解決済み】 Uncaught Error: Invariant Violation: 解決済み】 Uncaught Error: Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function but got: object.
-
[解決済み】FirefoxでGoogle Maps V3をリモートで使用すると「googleが定義されていません」と表示される。
-
[解決済み】'useState' が定義されていない no-undef React
-
[解決済み】JavaScriptで関数が存在するかどうかを確認する方法は?