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

Barbara Streisand
リリース: 2024-10-24 19:43:29
オリジナル
840 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!