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

JS新手求助:API数据模块化后调用无法渲染图表问题

模块化后API数据获取与图表渲染失败的问题修复

核心问题与修复步骤

1. fetchApi函数的异步解析错误

你的fetchApi函数里,response.json()是异步操作但未加await,导致返回的是未解析的Promise对象,而非实际JSON数据。

错误代码:

export const fetchApi = async (url) => {
    const response = await fetch(url);
    const data = response.json(); // 缺少await,返回Promise而非数据
    return data;
}

修复后:

export const fetchApi = async (url) => {
    const response = await fetch(url);
    const data = await response.json(); // 添加await解析JSON
    return data;
}

2. 主文件重复解析JSON的错误

fetchApi已经返回了解析好的JSON数据,你却再次调用response.json()——此时response是普通对象,根本没有json()方法,直接抛出错误中断后续逻辑。

错误代码:

const response = await fetchApi('https://api.gael.cloud/general/public/clima');
const weather = await response.json(); // 多余且报错的操作

修复后:

const weather = await fetchApi('https://api.gael.cloud/general/public/clima'); // 直接接收解析后的数据

3. 循环变量未声明的全局污染

for循环里的i未用let/const声明,会成为全局变量,可能引发意外问题。

错误代码:

for (i = 0; i < 8; i++) {

修复后:

for (let i = 0; i < 8; i++) { // 用let声明局部变量

4. 未触发getData函数

你定义了getData函数但从未调用,导致数据获取和图表渲染逻辑完全没执行。

修复:在主文件末尾添加调用:

getData();

完整修复后代码

fetch_2.js

export const fetchApi = async (url) => {
    const response = await fetch(url);
    const data = await response.json();
    return data;
}

主JS文件

import { fetchApi } from "./fetch_2";

async function getData() {
    const weather = await fetchApi('https://api.gael.cloud/general/public/clima');

    const regions = [];
    const temperatures = [];

    for (let i = 0; i < 8; i++) {
        regions.push(weather[i].Estacion);
        temperatures.push(weather[i].Temp);
    }

    new Chart(document.getElementById("bar-chart"), {
        type: 'bar',
        data: {
            labels: regions,
            datasets: [
                {
                    label: "regiones",
                    backgroundColor: color => {
                        return color.raw >= 15 ? 'orange' : 'lightblue'
                    },
                    data: temperatures
                }
            ]
        },
        options: {
            plugins: {
                legend: {
                    display: false,
                    color: 'white'
                }
            }
        },
    });
}

// 触发执行逻辑
getData();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 00:40:24