Wie man zwei Funktionen richtig parallelisiert und Fehler fängt?

8

Ich übe Golang und ich habe keine Ahnung, wie man Fehler fängt.

Was ich erwarte:

  1. FetchTickerData läuft
  2. Es ruft 2 verschiedene Funktionen gleichzeitig auf: fetchPriceTicket und fetchWhatToMine
  3. Wenn eine der Funktionen einen Fehler zurückgibt, gibt FetchTickerData diesen Fehler zurück
  4. Wenn alles in Ordnung ist, verarbeitet es Daten von beiden Quellen und gibt es zurück

Ich kann mir nicht vorstellen, wie man Fehler findet. Ich habe diesen Code geschrieben, aber ich denke nicht, dass es die richtige Lösung ist und es funktioniert nicht. Was ist der bessere Weg, das zu tun?

%Vor%

UPD: Wenn ich return <-err, <-whatToMine, <-currency durch return nil, <-whatToMine, <-currency ersetze, gibt es Daten zurück, die ich erwarte, gibt aber keinen Fehler zurück, wenn es einen gibt.

UPD: Es gibt eine zweite Version des Codes:

%Vor%

Aus irgendeinem Grund funktionieren HTTP-Anfragen hier nicht und es gibt keinen Fehler. Ideen?

%Vor%     
blits 05.02.2018, 14:23
quelle

2 Antworten

4

Da Sie keine Kanäle mehr verwenden, wird die Haupt-Routine beendet, bevor die anderen zwei Programme gestartet werden und das Programm beendet wird. Sie sollten Waitgroups verwenden, um die Hauptgoroutine zu blockieren, bis die anderen beiden ihre Arbeit beenden.

%Vor%     
Carlos Frias 05.02.2018, 15:39
quelle
10

Dies ist der perfekte Anwendungsfall für das context -Paket. Ich habe etwas von Ihrem Textbaustein und Ihrer zweiten Funktion entfernt. Sie werden das für Ihren tatsächlichen Code wieder hinzufügen.

%Vor%     
Flimzy 05.02.2018 14:50
quelle

Tags und Links