D3.js D3中两个链式转换中的第一个被中断,无法运行

D3.js D3中两个链式转换中的第一个被中断,无法运行,d3.js,transitions,D3.js,Transitions,我有一个函数,它使用D3运行一个由两部分组成的链式转换。对于转换的初始运行,我希望第一部分能够快速执行。事实上,我设置了0毫秒的持续时间 所以,我有这样的想法: t0 = selection.transition().duration(0) 我将转换的第二部分设置为运行更长时间,例如: t0.transition().duration(2000) 我的问题是:当转换的第一部分的持续时间为0时,它会被中断(可能是被转换的第二部分打断),并且不会运行 将第一次转换的持续时间设置为500毫秒可以解

我有一个函数,它使用D3运行一个由两部分组成的链式转换。对于转换的初始运行,我希望第一部分能够快速执行。事实上,我设置了0毫秒的持续时间

所以,我有这样的想法:

t0 = selection.transition().duration(0)
我将转换的第二部分设置为运行更长时间,例如:

t0.transition().duration(2000)
我的问题是:当转换的第一部分的持续时间为0时,它会被中断(可能是被转换的第二部分打断),并且不会运行

将第一次转换的持续时间设置为500毫秒可以解决问题

这是怎么回事?不能为每个子转换设置不同的持续时间吗

注意:我意识到我可以在没有转换的情况下初始化正确的起始值,但是看到这种行为让我怀疑我是否没有正确使用链式转换

示例如下:

var-DAT=[];

对于(var i=0;iI如果要进行持续时间为0的转换,那么最好直接将属性设置为结束值。在这种情况下,为什么还要麻烦进行转换?因为这样可以使转换更易于管理。假设用户可以在元素上触发转换。他们通常会在已完成的转换上触发新的转换ning元素。如果您需要从特定颜色或不透明度开始新触发的过渡,该怎么办?使用0持续时间过渡是取消已运行的过渡并指定新的开始颜色的简单方法。这可能是一个边缘情况错误,您必须跟踪d3代码以查看发生了什么。这是实现目标的更好方法,正如您在评论中所描述的,是使用styleTween来控制进入转换的开始条件。