[解決済み] node.jsで他のスレッドに影響を与えずにスレッドをスリープさせる方法とは?
2023-07-06 17:22:27
質問
以下の通りです。 node.jsのイベントループを理解する の通り、node.jsはシングルスレッドモデルをサポートしています。つまり、node.jsのサーバーに複数のリクエストをした場合、それぞれのリクエストに対して新しいスレッドを生成するのではなく、それぞれのリクエストを1つずつ実行します。 つまり、node.jsのコードで最初のリクエストに対して以下のような処理を行い、その間に新しいリクエストがnodeに来た場合、2番目のリクエストは最初のリクエストが完了するまで、5秒間のスリープ時間を含めて待機しなければならない、ということです。 そうですよね?
var sleep = require('sleep');
sleep.sleep(5)//sleep for 5 seconds
node.jsがリクエストごとに新しいスレッドを生成して、2番目のリクエストが最初のリクエストの完了を待つ必要がないようにする方法はありますか、または特定のスレッドにのみスリープを呼び出すことができますか?
どのように解決するのですか?
npm モジュールを参照している場合
スリープ
を参照しているのであれば、Readmeにあるように
sleep
が実行をブロックすることが書かれています。ですから、あなたの言う通り、これはあなたが望むものではありません。代わりに、あなたは
setTimeout
を使いたいところです。これはノンブロッキングです。以下はその例です。
setTimeout(function() {
console.log('hello world!');
}, 5000);
es7 async/awaitを使用してこれを行うことを検討している人のために、この例が役に立つはずです。
const snooze = ms => new Promise(resolve => setTimeout(resolve, ms));
const example = async () => {
console.log('About to snooze without halting the event loop...');
await snooze(1000);
console.log('done!');
};
example();
関連
-
[解決済み】Not on FX application thread; currentThread = JavaFX Application Thread エラーを回避する方法は?
-
[解決済み] 他のスレッドからGUIを更新するにはどうすればよいですか?
-
[解決済み] Node.jsのプログラムにコマンドライン引数を渡すにはどうしたらいいですか?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] Node.jsで終了する方法
-
[解決済み] プロセスとスレッドの違いは何ですか?
-
[解決済み] Node.jsアプリケーションをデバッグするにはどうすればよいですか?
-
[解決済み] Node.jsのmodule.exportsの目的と使い方を教えてください。
-
[解決済み] Node.js + Nginx - 今度は何?
-
[解決済み] CoreData: 警告。という名前のクラスがロードできない
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] スレッドコンテンションとは何ですか?
-
[解決済み] Dask: dask delayでどのようにコードを並列化するか?
-
[解決済み] 初心者のためのアトミック操作とは?
-
[解決済み】「スレッド」とは(本当は)何ですか?)
-
[解決済み】Node.jsに対するHaskellの対応について教えてください。
-
[解決済み】糸と繊維の違いは何ですか?
-
[解決済み】並行処理、並列処理、非同期メソッドの違いは何ですか?
-
[解決済み] 「executeFetchRequestで「コレクションは列挙中に変異しました。
-
[解決済み] Re-entrantロックとは何ですか?
-
[解決済み] ユーザーレベルのスレッドとカーネルがサポートするスレッドの違い?