[解決済み] Node.js (JavaScript)で待つには?
質問
個人的な必要性からコンソールスクリプトを開発しています。長時間の一時停止が必要なのですが、調べたところ、Node.jsには必要に応じて停止する方法がないようです。時間が経つとユーザーの情報が読みづらくなってしまうんです...。というようなコードを見かけましたが、その中に他のコードがないと動かないのではと思います。
setTimeout(function() {
}, 3000);
しかし、このコードの行以降を、一定期間後に実行する必要があります。
例えば
// start of code
console.log('Welcome to my console,');
some-wait-code-here-for-ten-seconds...
console.log('Blah blah blah blah extra-blah');
// end of code
のようなものも見受けられます。
yield sleep(2000);
しかし、Node.jsはこれを認識しない。
どうすればこの拡張ポーズを実現できますか?
どのように解決するのですか?
2021年1月更新
: Node REPLでインタラクティブに行うこともできます。
--experimental-repl-await
フラグ
$ node --experimental-repl-await
> const delay = ms => new Promise(resolve => setTimeout(resolve, ms))
> await delay(1000) /// waiting 1 second.
古い質問に対する新しい答え。今日(
2017年1月
2019年6月)はもっと簡単です。を使うことができます。
新しい
async/await
構文
.
例えば、以下のようになります。
async function init() {
console.log(1);
await sleep(1000);
console.log(2);
}
function sleep(ms) {
return new Promise((resolve) => {
setTimeout(resolve, ms);
});
}
使用方法
async/await
プラグインをインストールせずにそのまま使うには、node-v7 または node-v8 を使い、その中で
--harmony
フラグを使用します。
2019年6月更新。 NodeJSの最新バージョンを使用することで、そのまま使用することができます。コマンドライン引数の指定は不要です。Google Chromeでも現在サポートされています。
2020年5月更新。
間もなく
await
構文は、非同期関数の外側で使用できます。この例のように、トップレベルでは
await sleep(1000)
function sleep(ms) {
return new Promise((resolve) => {
setTimeout(resolve, ms);
});
}
提案はステージ3である . webpack 5 (alpha)を使用すれば、今日から使えます。
詳細はこちら
- NodejsのHarmony Flag。 https://nodejs.org/en/docs/es6/
- NodeJSの全バージョンをダウンロードできます。 https://nodejs.org/en/download/releases/
関連
-
JavaScriptの関数この指摘の問題を説明
-
JavaScriptの配列共通メソッド解説
-
[解決済み] JavaScriptのオブジェクトが空であることをテストするにはどうすればよいですか?
-
[解決済み] JavaScriptで空文字列/未定義文字列/null文字列をチェックするにはどうすればよいですか?
-
[解決済み] JavaScriptで要素のクラスを変更するにはどうすればよいですか?
-
[解決済み] JavaScriptで文字列をbooleanに変換するにはどうしたらいいですか?
-
[解決済み] 2つのJavaScriptオブジェクトのプロパティを動的にマージするにはどうすればよいですか?
-
[解決済み] JavaScriptでクエリ文字列の値を取得するにはどうすればよいですか?
-
[解決済み] JavaScriptのオブジェクトを表示するにはどうすればよいですか?
-
[解決済み] Node.jsのnpmモジュールをアンインストールするにはどうすればよいですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
vue3レスポンシブ対応のためのsetup+ref+reactive
-
Vueがechartsのtooltipにクリックイベントを追加するケーススタディ
-
[解決済み】awaitは非同期関数でのみ有効です。
-
[解決済み】GETできない / Nodejsエラー
-
[解決済み】Node.jsで "Cannot find module "エラーを解決するには?
-
[解決済み】「.addEventListener is not a function」なぜこのエラーが発生するのか?
-
フロントエンド null のプロパティ 'disabled' を読み取れない 問題が解決された
-
[解決済み] forEachループでasync/awaitを使用する
-
[解決済み] setTimeout()コールバックにパラメータを渡すにはどうすればよいですか?
-
[解決済み】JavaScript版sleep()とは?)