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

时间:2015-04-08 18:21:52

标签: javascript design-patterns asynchronous d3.js

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

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

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

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

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

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

  6. 我可以用任何设计方面的想法来完成这项工作吗?

        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.
    

1 个答案:

答案 0 :(得分:0)

我想出了一个解决方案。

我意识到数据加载部分应该留给API用户。我应该只询问直接数据,而不是要求URL加载文件。显示“忙碌屏幕”的责任'应该都是API用户所有。

当数据集完全加载时,他应该在他的回调上调用图表创建和渲染代码。我的图表可以直接呈现,而不用担心数据仍然被加载。

我检查了一些API,但我发现没有人负责解析和加载数据。

P.S。打开建议。