So laden Sie Daten aus einer CSV-Datei in D3 v5
Ich versuche, das laden der Daten aus einer CSV-Datei in D3, ich habe diesen code:
function update (error, data) {
if (error !== null) {
alert ("Couldn't load the dataset!");
} else {
//do something
};
function changeData () {
d3.csv ("data/dataset.csv", update);
}
Wenn ich D3 v4 funktioniert es einwandfrei, aber wenn ich den Schalter auf v5 es nicht mehr funktioniert.
Kann mir jemand erklären wie man den code ändern, damit es funktioniert mit D3 v5?
- hier Die Antwort können Sie in die richtige Richtung. Die API um es channged leicht und jetzt ist es gibt ein Versprechen.
- Werfen Sie einen Blick auf die änderungen markdown.
- Ich kann nicht schließen, dies als eine doppelte, weil diese Frage offenbar nicht ein Duplikat ist, dass man Sie verlinkt. Auf top von, dass, deine Antwort ist falsch (in Bezug auf OP ' s Frage), können Sie sogar sehen, ein downvote. Also, fühlen Sie sich frei zu kopieren, die Antwort hier (ohne den Stapel Schnipsel, stack-snippet für die running code only) und löschen Sie diese, da es falsch ist.
- ja, repostedy Antwort auf die eigentliche Frage.
Du musst angemeldet sein, um einen Kommentar abzugeben.
d3 v5 verwendet fetch API und gibt ein Versprechen, dass der code unten.
Falls in der Zukunft die Menschen wollen, v4. d3 v4 auf der anderen Seite verwendet das XMLHttpRequest-Methode, und nicht wieder ein Versprechen, dass dies der code
csv-laden ist async, so stellen Sie sicher, dass Sie Ihre Diagramm-code im csv-Funktion.
.catch()
, um die Behandlung dieser Fehler. D3 wird nicht Bericht, sonstige Fehler, noch werden Sie Ihnen den Zugang zu denResponse
Objekt. Diese wurde ausgelöst, als ein Problem wurde aber abgelehnt von Mike Bostock, wer fördert die Nutzung von Fetch API sollte es keine Notwendigkeit für eine weitere Fehlerbehandlung.ReferenceError: fetch is not defined
@pmkro Antwort ist gut, aber wenn Sie verwenden möchten ES7 async/erwarten statt Versprechen.dann:
doThings1(); doThings2();
.