首页  >  文章  >  web前端  >  为什么我的代码没有在 D3.json() 的回调中执行?

为什么我的代码没有在 D3.json() 的回调中执行?

Susan Sarandon
Susan Sarandon原创
2024-11-01 21:41:02467浏览

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

D3 的 JSON 回调中的代码执行问题

问题:

在之前的 D3 版本中到 v5,d3.json() 函数回调中编写的代码未执行,导致浏览器跳过调用中包含的所有内容。

解决方案:

D3 v5 中的签名更改:

d3.json() 的签名在 D3 v5 中已更改。它现在返回一个 Promise,而不是依赖回调函数。第二个参数现在是一个可选的 RequestInit 对象。

修改的代码:

要解决此问题,请重写代码如下:

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

错误处理:

D3 v5 不再依赖回调的第一个参数进行错误处理。相反,如果发生错误,d3.json() 返回的 Promise 将被拒绝。

处理错误的主要方法有两种:

  1. .then()使用错误处理程序:
d3.json("/trip_animate/tripData.geojson")
  .then(function(data) {
    // Code from your original callback here...
  })
  .catch(function(error) {
    // Error handling code here...
  });
  1. .catch() 用于错误处理:
d3.json("/trip_animate/tripData.geojson")
  .then(function(data) {
    // Code from your original callback here...
  }).catch(function(error) {
    // Error handling code here...
  });

通过实现通过这些更改,您可以确保 d3.json() 回调中的代码将按预期执行。

以上是为什么我的代码没有在 D3.json() 的回调中执行?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn