You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

D3.js中d3.json回调函数未触发问题求助

解决D3.js v5中d3.json回调不执行的问题

嘿,这坑我之前也踩过!核心原因是你用的是D3 v3/v4时期的d3.json写法,但D3 v5开始已经把这类数据请求方法改成基于Promise的异步模式了,不再支持原来的回调参数,所以你写的那个回调函数根本不会被触发——哪怕网络请求成功了也没用。

给你两种可行的解决方法:

方法一:使用Promise的.then()链式调用

这是D3 v5推荐的标准写法,用.then()处理成功响应,.catch()捕获错误(别漏掉错误处理,能帮你排查后续潜在问题):

d3.json('http://localhost:53526/api/foo')
  .then(function(data) {
    // 请求成功时执行这里
    console.log(data);
  })
  .catch(function(error) {
    // 请求失败时的错误处理
    console.error('数据请求出错:', error);
  });

方法二:使用async/await语法

如果你的代码在异步函数环境里,也可以用更简洁的async/await写法:

async function loadData() {
  try {
    const data = await d3.json('http://localhost:53526/api/foo');
    console.log(data);
  } catch (error) {
    console.error('加载数据失败:', error);
  }
}
// 调用这个异步函数
loadData();

再补充一句:你浏览器网络面板能看到响应,说明请求本身没问题,只是D3 v5不再识别你传的那个回调参数了,把结果通过Promise返回才是正确的获取方式。

内容的提问来源于stack exchange,提问作者Matthew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:17:10