Verwaltung der Sichtbarkeit der Prozessausführung mit Auslastungsindikatoren
Bei der Ausführung langwieriger untergeordneter Prozesse in Go ist eine gut informierte Benutzererfahrung von entscheidender Bedeutung. Eine einfache Meldung „Befehl wird ausgeführt und auf Abschluss gewartet …“ kann bei Benutzern Unsicherheit über den laufenden Vorgang hervorrufen. Um dieses Problem anzugehen, können wir Belegtindikatoren einsetzen, um Echtzeit-Feedback zu geben.
Implementieren eines Belegtindikators
Ein effektiver Ansatz besteht darin, eine separate Goroutine zur regelmäßigen Anzeige zu verwenden eine Besetztanzeige. In diesem Beispiel verwenden wir einen Punkt als Indikator:
<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>
Diese Goroutine druckt weiterhin Punkte, bis ein Signal gesendet wird, um sie zu beenden.
Integration mit Prozess Ausführung
In unserer Hauptausführungsroutine können wir den Beschäftigt-Indikator starten und warten, bis der untergeordnete Prozess abgeschlossen ist:
<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>
Wenn der Prozess abgeschlossen ist, wird der Indikator Goroutine sein beendet und ein Zeilenendezeichen wird gedruckt.
Benutzererfahrung verbessern
Um die Benutzererfahrung weiter zu verbessern, können Sie den Indikator anpassen. Sie könnten beispielsweise nach einer bestimmten Anzahl von Punkten eine neue Zeile drucken:
<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>
Dadurch entsteht eine optisch ansprechendere Anzeige des laufenden Prozesses.
Das obige ist der detaillierte Inhalt vonWie können Sie mit Auslastungsindikatoren die Sichtbarkeit der Prozessausführung in Go verbessern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!