d3.js中的转换队列; 逐一

jbk*_*nst 3 recursion transition d3.js

我试图在d3.js中进行链式转换.为此,我在数组中定义了一组转换,并且(尝试)使用函数来递归调用它们.each("end", function()),在前一个完成时启动转换,但我还没有结果.

行动清单

    animations = [  function(){  console.log(1); return circle.transition().duration(2e3).attr("cy", Math.random()*300); } ,
                    function(){  console.log(2); return rect.transition().duration(3e3).attr("fill", "#"+((1<<24)*Math.random()|0).toString(16)); },
                    function(){  console.log(3); return circle.transition().duration(1e3).attr("r", Math.random()*500); },
                    function(){  console.log(4); return circle.transition().duration(2e3).style("fill", "#"+((1<<24)*Math.random()|0).toString(16)); },
                    function(){  console.log(5); return circle.transition().duration(1e3).attr("cx", Math.random()*500); }]
Run Code Online (Sandbox Code Playgroud)

递归函数

    function animate(index){
        if(index < animations.length - 1){
            index = index + 1
            return animations[index]().each("end", animate(index))
        } else {
            return true
        }
    }
Run Code Online (Sandbox Code Playgroud)

jsfiddle就在这里,是一个使用recusive函数的例子.

谢谢大家.

mee*_*mit 5

你快到了!

代替

return animations[index]().each("end", animate(index))
Run Code Online (Sandbox Code Playgroud)

你需要

return animations[index]().each("end", function() { animate(index) })
Run Code Online (Sandbox Code Playgroud)

查看更新的jsFiddle

  • @Terbiy OP必须删除了原始的jsfiddle,它也删除了我的 (2认同)