Maison  >  Article  >  interface Web  >  Pourquoi mon code ne s'exécute-t-il pas dans le rappel de D3.json() ?

Pourquoi mon code ne s'exécute-t-il pas dans le rappel de D3.json() ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-01 21:41:02467parcourir

Why Is My Code Not Executing Within D3.json()'s Callback?

Problèmes d'exécution de code dans le rappel JSON de D3

Problème :

Dans les versions D3 antérieures vers la v5, le code écrit dans le rappel de la fonction d3.json() ne s'exécutait pas, provoquant le navigateur pour ignorer tout ce qui est inclus dans l'appel.

Solution :

Changement de signature dans D3 v5 :

Le la signature de d3.json() a changé dans D3 v5. Il renvoie désormais une promesse au lieu de s'appuyer sur une fonction de rappel. Le deuxième argument est désormais un objet RequestInit facultatif.

Code modifié :

Pour résoudre le problème, réécrivez le code comme suit :

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

Gestion des erreurs :

D3 v5 ne s'appuie plus sur le premier paramètre de le rappel pour la gestion des erreurs. Au lieu de cela, la promesse renvoyée par d3.json() sera rejetée si une erreur se produit.

Il existe deux manières principales de gérer les erreurs :

  1. .then() avec le gestionnaire d'erreur :
d3.json("/trip_animate/tripData.geojson")
  .then(function(data) {
    // Code from your original callback here...
  })
  .catch(function(error) {
    // Error handling code here...
  });
  1. .catch() pour l'erreur Gestion :
d3.json("/trip_animate/tripData.geojson")
  .then(function(data) {
    // Code from your original callback here...
  }).catch(function(error) {
    // Error handling code here...
  });

En implémentant ces modifications, vous pouvez vous assurer que votre code dans le rappel d3.json() s'exécutera comme prévu.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn