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

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

Linda Hamilton
Linda HamiltonOriginal
2024-10-30 13:54:03325Durchsuche

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

Codeausführungsunterbrechung im d3.json()-Rückruf

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.

Migration zu Promises in D3 v5

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.

Überarbeiteter Code für die Verarbeitung asynchroner Anfragen

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...
  });

Fehlerbehandlung in D3 v5

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!

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