Heim >Backend-Entwicklung >Golang >Wie kann ich einen Fehler von Inside Promise zurückgeben?

Wie kann ich einen Fehler von Inside Promise zurückgeben?

WBOY
WBOYnach vorne
2024-02-09 17:03:08993Durchsuche

Wie kann ich einen Fehler von Inside Promise zurückgeben?

Beim Schreiben von Code müssen wir uns häufig mit möglichen Fehlersituationen auseinandersetzen. Manchmal müssen wir jedoch einen Fehler innerhalb einer Funktion oder Methode zurückgeben, damit dieser beim Aufruf der Funktion oder Methode korrekt behandelt werden kann. In PHP haben wir mehrere Möglichkeiten, dies zu erreichen. In diesem Artikel wird erläutert, wie Fehler innerhalb von Versprechen zurückgegeben werden, um Entwicklern dabei zu helfen, Fehlersituationen besser zu bewältigen.

Frageninhalt

Ich habe eine Funktion (sendall),如果 kgo.produce (文档在这里)中发生错误,我想让它返回 error) Wie schaffe ich es, die Schleife zu stoppen und einen Fehler zurückzugeben?

func (k *buffer) sendAll() error {
    for _, record := range k.buffer {
        kgo.Produce(ctx, &record, func(r *kgo.Record, err error) {
            if err != nil {
                fmt.Printf("record had a produce error: %v\n", err)
                
                // How do I return an error here and exit sendAll function?
                
            }
        })
    }
    return nil
}

Workaround

Mir scheint, dass man damit durchkommt, indem man einfach die „lokale“ Variable überprüft.

func (k *buffer) sendAll() error {

    var loop error

    for _, record := range k.buffer {
        if loop != nil {
            break
        }
        kgo.Produce(ctx, &record, func(r *kgo.Record, err error) {
           
            if err != nil {
                fmt.Printf("record had a produce error: %v\n", err)
                
                // How do I return an error here and exit sendAll function?
                loop = err
            }
        })
    }
    return loop
}

Das obige ist der detaillierte Inhalt vonWie kann ich einen Fehler von Inside Promise zurückgeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen