ホームページ >バックエンド開発 >Golang >ビジーインジケーターを使用して、Go でのプロセス実行の可視性を高めるにはどうすればよいでしょうか?

ビジーインジケーターを使用して、Go でのプロセス実行の可視性を高めるにはどうすればよいでしょうか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-24 19:43:29942ブラウズ

How can you enhance process execution visibility in Go with busy indicators?

ビジー インジケーターによるプロセス実行の可視性の管理

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
        }
    }
}</code>

このゴルーチンは、終了するシグナルが送信されるまでドットを出力し続けます。

プロセスとの統合実行

メインの実行ルーチンでは、ビジー インジケーターを開始し、子プロセスが完了するのを待つことができます。

<code class="go">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>

プロセスが完了すると、インジケーターのゴルーチンは次のようになります。

ユーザー エクスペリエンスの向上

ユーザー エクスペリエンスをさらに向上させるために、インジケーターをカスタマイズできます。たとえば、特定の数のドットの後に新しい行を印刷できます。

<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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。