Javascript heatmap.js插件,在D3.js中逐步显示数据

Javascript heatmap.js插件,在D3.js中逐步显示数据,javascript,d3.js,heatmap,Javascript,D3.js,Heatmap,我有一个使用D3和一个空数据集。我希望每次在数据集中添加数据时都显示热图 脚本: const self = this; h.setData({ max: 1, data: self.newData . // empty }) this.mydata.forEach(function(e){ self.newData.push(e); // self.wait(500) h.addData(e); h.repaint(); con

我有一个使用D3和一个空数据集。我希望每次在数据集中添加数据时都显示热图

脚本:

const self = this;
 h.setData({
  max: 1,
  data: self.newData . // empty
 })
 this.mydata.forEach(function(e){
      self.newData.push(e);
      // self.wait(500)
     h.addData(e);
     h.repaint();
     console.log(self.newData.length)
 })
但结果不是我想要的!地图清晰,console.log显示直到最后一个数据的增量计数器。而不仅仅是在最后,地图图像被更新


你有没有办法修复它?

你必须使用一种机制,让JavaScript引擎将控制权交还给渲染引擎

setTimeout
是一种方法:

var data = this.myData;

function addAndRender(i) {
    if (i >= data.length) {
        return;
    }

    e = data[i];
    self.newData.push(e);
    // self.wait(500)
    h.addData(e);
    h.repaint();

    // the delay before next call can be set here (in milliseconds) :
    setTimeout( function(){ addAndRender(i+1); }, 500 );
}

addAndRender(0);

谢谢,这很有帮助。我使用了setTimeout函数(请参阅我的注释行self.wait(500),这是我的自定义函数,但它不起作用。但另一个问题是,我使用了addDate()方法:它需要所有的数据集!而不仅仅是一个要添加的数据。我注意到,如果我逐个添加数据,映射热会有不同的颜色,但是console.log在循环结束时显示相同的数据集(newData=myData)。Hmm。。