Javascript 在D3js中,我如何为更新每个节点提供延迟

Javascript 在D3js中,我如何为更新每个节点提供延迟,javascript,d3.js,Javascript,D3.js,我用的是D3js。我做了一个力定向图。但是,当我想更新每个节点的颜色(我的主要目标是进行一些计算,然后根据结果更改颜色)时,所有节点都会同时更新。我希望在完成一个节点后有一个延迟,然后转到下一个节点。我还想定期检查所有节点。因此,函数colorChange应每2秒执行一次 这是图表的最新版本 这是我更新节点颜色的代码: d3.interval(colorChange, 2000); function colorChange(){ var color = d3.select("circle"

我用的是D3js。我做了一个力定向图。但是,当我想更新每个节点的颜色(我的主要目标是进行一些计算,然后根据结果更改颜色)时,所有节点都会同时更新。我希望在完成一个节点后有一个延迟,然后转到下一个节点。我还想定期检查所有节点。因此,函数
colorChange
应每2秒执行一次

这是图表的最新版本

这是我更新节点颜色的代码:

d3.interval(colorChange, 2000);

function colorChange(){
  var color = d3.select("circle").style("fill");
  if (color == "rgb(0, 0, 255)")
    d3.selectAll("circle").each(function(){
      d3.select(this).style("fill","red");
    });
  else
    d3.selectAll("circle").style("fill","blue");

}

这可能会实现您想要实现的目标:

d3.interval(colorChange, 2000);

function colorChange(){
  var color = d3.select("circle").style("fill");
  if (color == "rgb(0, 0, 255)")
    d3.selectAll("circle").each(function(){
      d3.select(this).style("fill","red");
      // How long to wait in ms
      sleep(100);
    });
  else
    d3.selectAll("circle").style("fill","blue");

}

function sleep(ms) {
   var now = new Date().getTime();
   while(new Date().getTime() < now + ms){ /* do nothing */ } 
}
d3.区间(colorChange,2000);
函数colorChange(){
var color=d3。选择(“圆圈”)。样式(“填充”);
如果(颜色=“rgb(0,0,255)”)
d3.选择全部(“圆”)。每个(函数(){
d3.选择(此)样式(“填充”、“红色”);
//在ms里要等多久
睡眠(100);
});
其他的
d3.选择全部(“圆圈”)。样式(“填充”、“蓝色”);
}
功能睡眠(ms){
var now=new Date().getTime();
while(new Date().getTime()
您的问题(我的意思是,期望的结果)并不十分清楚,但我想您可以通过延迟过渡来获得想要的结果,而不是每个

function colorChange() {
    var color = d3.select("circle").style("fill");
    if (color == "rgb(0, 0, 255)") {
        d3.selectAll("circle")
            .transition()
            .delay((d, i) => i * 50)
            .duration(100)
            .style("fill", "red");

    } else {
        d3.selectAll("circle")
            .transition()
            .delay((d, i) => i * 50)
            .duration(100)
            .style("fill", "blue");
    }
}

这是更新后的代码(我将间隔改为5秒,只是为了有时间绘制所有圆圈,所以请稍等第一次调用):

删除d3.interval?我想定期检查所有节点。因此,函数
colorChange
应每2秒执行一次。出现错误:
Uncaught SyntaxError:line
wait sleep(100)中的意外标识符
还有一件事。我应该在哪里调用我的
checkStatus
函数,根据结果查看节点是否更改?好吧,由于问题中没有明确说明,我建议您发布另一个问题,更好地解释您的问题。如果你在这里问这个问题,在评论中,我是唯一一个阅读它的人。另一方面,如果你发布了一个新问题,每个人都会阅读它。但我已经解释了更新每个节点颜色(我的主要目标是进行一些计算,然后根据结果更改颜色)