In D3 v5 kann der Code im d3.json()-Rückruf nicht ausgeführt werden, was die Entwickler verwirrt. Diese Diskrepanz ist aufgrund erheblicher Änderungen in der Signatur von d3.json() seit D3 v4 entstanden.
D3 v5 hat XMLHttpRequest aufgegeben und die Fetch-API übernommen, was zu bevorzugen ist Verspricht, asynchrone Anfragen zu verwalten. Folglich ist das zweite Argument von d3.json() nicht mehr der Rückruf, der für die Bearbeitung der Anfrage verantwortlich ist. Stattdessen dient es als optionales RequestInit-Objekt. Als Ergebnis gibt d3.json() jetzt ein Promise zurück, das mit seiner .then()-Methode manipuliert werden kann.
Um das Problem zu beheben, verwenden Sie Ihren Code sollte wie folgt geändert werden:
d3.json("/trip_animate/tripData.geojson") .then(function(data){ // Code from your callback goes here... });
Die Fehlerbehandlung hat in D3 v5 ebenfalls Änderungen erfahren. In früheren Versionen wurden Fehler über den ersten Parameter des an d3.json() übergebenen Rückrufs gemeldet. In D3 v5 wird das von d3.json() zurückgegebene Promise jedoch abgelehnt, wenn ein Fehler auftritt. Dies ermöglicht die Verwendung von Vanilla-JS-Fehlerbehandlungsmechanismen:
Verwendung des Ablehnungshandlers als zweites Argument für .then()
d3.json("/trip_animate/tripData.geojson") .then(function(data) { // Code from your callback goes here... }, function(error) { // Error handling code here... });
Verwendung von .catch( ) zur Bearbeitung von Ablehnungen
d3.json("/trip_animate/tripData.geojson") .then(function(data) { // Code from your callback goes here... }) .catch(function(error) { // Error handling code here... });
Das obige ist der detaillierte Inhalt vonWarum wird mein Code im d3.json()-Rückruf in D3 v5 nicht ausgeführt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!