等待渲染图表直到数据加载完毕

Waiting for rendering a chart till data has loaded

我用D3.js做了一个小图表。

  1. 针对不同的输入数据类型,有 3 种不同的加载函数。

  2. 我的图表可以在这些数据集的任何一个上渲染,一次一个基于传递给渲染函数的参数。

  3. 数据加载代码是异步的,这会产生问题,因为我的渲染函数甚至在数据完全加载之前就开始绘制。

  4. 我给出了单独的加载函数,而不是在渲染函数中调用它们,因为用户可能只想先加载数据集,然后再渲染图表。

  5. 我想在开始绘图之前等待一个标志,并在所有数据集都上传后设置这个标志,但对我来说看起来很难看,因为无限循环。

有什么设计方面的想法可以用来完成这项工作吗?

    var visualization = new  Chart()
                          .width(1000)
                          .height(1000)
                          .loadDissimilarityMatrix('dataSet1.csv')
                          .loadAdjacencyMatrix('dataSet2.csv')
                          .loadLaplacianMatrix('dataSet3.csv')
                          .render('Dissimilarity')
                          // .render('Adjacency') for using the adjacency dataset.

我想出了一个解决办法。

我意识到数据加载部分应该留给 API 用户。我不应该要求 URL 来加载文件,而应该只要求直接数据。显示 'busy screen' 等的责任应全部由 API 用户承担。

他应该在数据集完全加载后在回调中调用图表创建和呈现代码。我的图表可以直接呈现而不用担心数据仍在加载。

我检查了一些 API,我发现 none 也负责解析和加载数据。

P.S。欢迎提出建议。