Heim  >  Artikel  >  Web-Frontend  >  Warum wird mein Code im d3.json()-Rückruf nicht ausgeführt?

Warum wird mein Code im d3.json()-Rückruf nicht ausgeführt?

DDD
DDDOriginal
2024-10-30 12:32:14979Durchsuche

Why Is My Code Within the d3.json() Callback Not Executing?

Code innerhalb von d3.json() Rückruf nicht ausgeführt

Erklärung

In D3 v5 hat sich die Signatur von d3.json() erheblich geändert im Vergleich zu seinen Vorgängerversionen. Anstatt eine Callback-Funktion zu verwenden, gibt d3.json() jetzt ein Promise zurück, das mit seiner .then()-Methode verarbeitet werden kann. Diese Änderung behebt mehrere Probleme mit der alten Implementierung und bringt D3 in Einklang mit modernen Browser-APIs.

Lösung

Um das Problem zu beheben, bei dem Code im d3.json()-Rückruf nicht ausgeführt wird, Sie müssen Ihren Code aktualisieren, um Promises verwenden zu können. Die neue Syntax zum Laden von Daten aus einer GeoJSON-Datei lautet wie folgt:

d3.json("/trip_animate/tripData.geojson")
  .then(function(data) {
    // Code from your callback goes here...
  });

Fehlerbehandlung

Zusätzlich zur Änderung der Rückrufstruktur führt D3 v5 auch neue Möglichkeiten zur Fehlerbehandlung beim Laden ein Daten. Anstatt einen Fehlerhandler als ersten Parameter an die Callback-Funktion zu übergeben, sollten Sie die .catch()-Methode des Promise:

d3.json("/trip_animate/tripData.geojson")
  .then(function(data) {
    // Code from your callback goes here...
  })
  .catch(function(error) {
    // Do some error handling.
  });
verwenden

Das obige ist der detaillierte Inhalt vonWarum wird mein Code im d3.json()-Rückruf nicht ausgeführt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn