javascriptのwaitに関する質問です。する質問をすることでしか得られない、回答やアドバイスがある。15分調べてもわからないことは、質問しよう!質問するただいまの回答率89.63%トップJavaScriptに関する質問JavaScriptJavaScriptを有効にしてくださいjavascriptのwaitに関する質問です。23前提・実現したいこと以下のコードでサーバーのGPUの状態をsshコマンドを用いて得ようとしているのですが、arrayの中身がundefiedであるというエラーがでてうまくいきません。問題点は、まだarrayの中に情報が入っていないのにもかかわらず、sliceをしてしまっていることです。解決法として、arrayの中にきちんと要素が入ってからslice処理を行うということをしたいのですが、どのようにすれば良いのかわかりません。2));});});を走らせてみて途中のstdoutの結果を見ました。補足情報(言語/FW/ツール等のバージョンなど)nodeのsimple-sshattachmentクリップ2気になる質問をクリップするクリップした質問は、後からいつでもマイページで確認できます。クリップした質問に回答があった際、通知やメールを受け取ることができます。自分も答えを知りたい質問者以外のユーザにも役立つ評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。質問の評価を上げたことを取り消します低評価-評価を下げられる数の上限に達しました評価を下げることができません1日5回まで評価を下げられます1日に1ユーザに対して2回まで評価を下げられます質問の評価を下げるteratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。コメントをしてください。送信する質問の評価を下げる機能の利用条件この機能を利用するためには、以下の事項を行う必要があります。06:58JSでsshコマンドを実行するということは何らかのライブラリやツールを使用していると思いますが、使用しているライブラリもしくはツールを記載してください。JSでsshコマンドを実行するということは何らかのライブラリやツールを使用していると思いますが、使用しているライブラリもしくはツールを記載してください。実行した、実際の標準出力の結果を記載してください。実行した、実際の標準出力の結果を記載してください。08:11sshを使用しているライブラリーはnodeのsimple-sshというものです。%というような3つのstringです。sshを使用しているライブラリーはnodeのsimple-sshというものです。%というような3つのstringです。08:19このコメントにではなく、質問内容に追加してください。出力結果はコピペしてそのまま記載してくださいこのコメントにではなく、質問内容に追加してください。一行となるのでしょうか。それとも複数行になるのでしょうか。出力結果はわかりやすくコードと同様に```で囲ってください。一行となるのでしょうか。それとも複数行になるのでしょうか。出力結果はわかりやすくコードと同様に```で囲ってください。```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。件sort評価が高い順sort新着順sort古い順link+6JavaScriptにはwaitという概念はありません。ファイルやDBの取得や実行、通信などの通常は待ちが発生するような処理は、開始と共にバックグラウンドで行われ、終了を待たずに次のコードへ進みます。これを非同期処理と言います。取得内容を使用するには、ファイルの取得等が終了した後に実行されるコールバック関数で全ての処理をする必要があります。Node.jsのfs等には、処理を待ってくれるsync系のメソッドも一部だけ存在します。simple-sshも同様で、コールバック内でしか、その結果を利用できません。今回のコードでは、outで指定しているコールバック内で全て処理するか、処理する関数をコールバック内から呼び出す必要があります。次のように書きかえれば、sshでの取得内容を利用できるようになります。2));});これではコールバックがどんどん深くなって、コールバックだらけになるのでは無いのか?と思うかも知れません。これはいわゆるコールバック地獄と言われるもので、JavaScriptのコードをわかりにくいものにするものの一つと言われています。これを解決するにはPromise等を使う必要があります。Promiseの使い方は色々と文献がありますので、調べてみてください。まとめると次のようになります。IOや実行、通信等の待ちが発生するような処理をJavaScriptは待ってくれず、非同期で行う。その結果はコールバック内(またはコールバックから呼び出した関数内)でしか利用できない。コールバックだらけになるコールバック地獄を解消するには、Promise等を使う必要がある。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。08:24丁寧な回答ありがとうございます。コードをデバッグモードで走らせてみました。