填充数组后如何调用函数

问题描述 投票:0回答:1

我有一个使用chart.js构建图表的函数,但是有时该函数在我获取数据的前一个函数尚未完成时运行,因此图表中断了,当我有一个函数时,如何调用函数我需要的所有数据?我想使用与setTimeout不同的东西,因为我已经使用了它,有时它仍然会失败,所以我不想一直增加超时数。

    if (regionData !== undefined) {
    that.hasData = true;
    Object.entries(regionData).forEach(e => {
      let obj = {};
      let value = 0;
      let regionD = all_regions.map(function (e) { return e.id; }).indexOf(e[0]);
      obj["regionDescription"] = all_regions[regionD].data.d;
      obj["region"] = e[0];
      if (e[1] !== undefined && e[1]["month"] !== undefined) {
        value = e[1]["month"][e[1]["month"].length - 1];
      }
      obj["regio"] = value;
      regionS.push(obj);
    });
    that.buildChart(regionS, lastMonth);
  }

这就是我的图表函数的调用位置

javascript chart.js
1个回答
0
投票

我看不到您的其余代码,但是根据您的描述,有一个简单的逻辑解决方案。

问题是buildChart函数在getChartData函数之前运行。解。在getChartData函数之后调用buildChart函数。伪代码示例,

const getChartData = () => {
    return new Promise((resolve) => {
        Run your HTTP request and retrieve your data
        resolve(chart data ready to be used)
    });
}
const buildChart = () => {
    // do your chart building here
}
//then you run the functions in sequence.
getChartData().then(buildChart);
© www.soinside.com 2019 - 2024. All rights reserved.