実行されたプロセスの待機/ビジー インジケーターの作成
exec.Command を使用して npm パッケージをインストールするなど、Go で子プロセスを実行するとき、出力が表示されるまでにかなりの時間がかかる場合があります。ユーザー エクスペリエンスを向上させるには、プロセスが進行中であることを示すビジー インジケーターを表示することを検討してください。
解決策:
効果的な解決策の 1 つは、別の goroutine を使用して定期的に実行することです。プロセスの実行中に、ドットなどの文字をコンソールに出力します。プロセスが完了すると、インジケーターのゴルーチンを終了できます。
<code class="go">func indicator(shutdownCh <-chan struct{}) { ticker := time.NewTicker(time.Second) defer ticker.Stop() for { select { case <-ticker.C: fmt.Print(".") case <-shutdownCh: return } } } func main() { cmd := exec.Command("npm", "install") log.Printf("Running command and waiting for it to finish...") // Start indicator: shutdownCh := make(chan struct{}) go indicator(shutdownCh) err := cmd.Run() close(shutdownCh) // Signal indicator() to terminate fmt.Println() log.Printf("Command finished with error: %v", err) }</code>
より視覚的に魅力的なインジケーターを作成するには、5:
<code class="go">func indicator(shutdownCh <-chan struct{}) { ticker := time.NewTicker(time.Second) defer ticker.Stop() for i := 0; ; { select { case <-ticker.C: fmt.Print(".") if i++; i%5 == 0 { fmt.Println() } case <-shutdownCh: return } } }</code>
以上がGoで実行されたプロセスの待機中/ビジーインジケーターを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。