Heim  >  Artikel  >  Web-Frontend  >  Warum kann mein Code innerhalb des d3.json()-Rückrufs in D3 v5 nicht ausgeführt werden?

Warum kann mein Code innerhalb des d3.json()-Rückrufs in D3 v5 nicht ausgeführt werden?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-30 15:21:42381Durchsuche

Why Does My Code Fail to Execute Within d3.json() Callback in D3 v5?

Fehler beim Ausführen von Code in d3.json() Rückruf in D3 v5

In D3 v5 die Ausführung von Code innerhalb von d3. Der Rückruf von json() schlägt häufig fehl. Dies unterscheidet sich vom Verhalten in früheren Versionen, in denen der Rückruf wie erwartet ausgeführt wurde.

Ursache:

Die Signatur von d3.json() wurde gegenüber D3 geändert v4 bis v5. In Version 5 wird die Anfrage mithilfe von Versprechen statt Rückrufen bearbeitet. Das zweite Argument für d3.json() ist kein Callback mehr, sondern ein optionales RequestInit-Objekt.

Lösung:

Um dieses Problem zu beheben, konvertieren Sie den Code innerhalb von Rückruf einer Rückruffunktion, die als Argument an die neue .then()-Methode übergeben wird. Der Code lautet:

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

Fehlerbehandlung:

Die Fehlerbehandlung wurde auch in D3 v5 aktualisiert. In früheren Versionen wurden Fehler mithilfe des ersten Parameters des an d3.json() übergebenen Rückrufs behandelt. In v5 kann das von d3.json() zurückgegebene Versprechen abgelehnt werden, um auf einen Fehler hinzuweisen. Fehler können mit der Methode .catch() erfasst werden.

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

Das obige ist der detaillierte Inhalt vonWarum kann mein Code innerhalb des d3.json()-Rückrufs in D3 v5 nicht ausgeführt werden?. 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