d3.js中的'start'事件是什么?

Lea*_*ple 2 javascript d3.js

我注意到在Bostock 最近的一个街区他有一个'开始'事件:

d3.select("body").selectAll("div")
    .data(d3.range(n))
  .enter().append("div")
  .transition()
    .delay(function(d, i) { return i + Math.random() * n / 4; })
    .ease(d3.easeLinear)
    .on("start", function repeat() {
        d3.active(this)
            .styleTween("background-color", function() { return whiteblue; })
          .transition()
            .delay(1000)
            .styleTween("background-color", function() { return blueorange; })
          .transition()
            .delay(1000)
            .styleTween("background-color", function() { return orangewhite; })
          .transition()
            .delay(n)
            .on("start", repeat);
      });
Run Code Online (Sandbox Code Playgroud)

有谁知道这是做什么的?

是等同于负载还是在转换开始的延迟期后触发?

Mar*_*ark 6

该块是用d3v4 编写的.它看起来像v3 transition.each已经被重命名为transition.on(这更有意义).说过这start一直是转型的事件类型:

如果指定了type,则为转换事件添加一个侦听器,支持"start","end"和"interrupt"事件.将为转换中的每个单独元素调用侦听器.

在调用任何补间之前,在转换的第一个异步回调(tick)期间调用start事件.对于零延迟的转换,通常在调度转换后约17ms.状态事件对于触发每个元素的瞬时更改非常有用,例如更改无法插值的属性.

为了回答你的具体问题(我的上面的粗体)"或是在延迟期后过渡开始的时候" - 是的.