Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 环路内d3元件的延迟加载_Javascript_Jquery_D3.js - Fatal编程技术网

Javascript 环路内d3元件的延迟加载

Javascript 环路内d3元件的延迟加载,javascript,jquery,d3.js,Javascript,Jquery,D3.js,此小提琴延迟加载线: 这正如预期的那样有效。我尝试多次加载此行,因此我将替换: drawLine(); 与 但是为什么这会导致函数drawLine被不断调用,而延迟被忽略呢。如何修改fiddle代码,使函数不会被毫不延迟地调用 小提琴代码: drawLine(); function drawLine(){ var svgContainer = d3.select("body").append("svg") .attr("width", 1200)

此小提琴延迟加载线:

这正如预期的那样有效。我尝试多次加载此行,因此我将替换:

drawLine();

但是为什么这会导致函数drawLine被不断调用,而延迟被忽略呢。如何修改fiddle代码,使函数不会被毫不延迟地调用

小提琴代码:

drawLine();

function drawLine(){
var svgContainer = d3.select("body").append("svg")
                .attr("width", 1200)
                .attr("height", 1200)
                .attr("text-align", "center");    

var labelLine = svgContainer.append("line")
                .attr("x1", 10)
                .attr("y1", 10)
                .attr("x2", 30)
                .attr("y2", 30)
                .attr("stroke-width", 2)
                .attr("stroke", "black")
                 .style("visibility", "hidden")
                .transition()
                .delay(1500)
                .style("visibility", "visible")
}
而真正的抽绳;是一个无限循环,当延迟的图形堆积时,它将使浏览器崩溃。试着像这样限制这个数字:var i=10;whilei-抽绳

请注意,由于计算机速度很快,所有线条将在几乎相同的时间绘制-即运行脚本后1.5秒。如果要按顺序绘制,请尝试设置超时,并增加延迟。

.delay1500是非阻塞的,因此循环将不延迟地连续调用drawline。您需要的是:

drawLine();

function drawLine(){
var svgContainer = d3.select("body").append("svg")
                .attr("width", 1200)
                .attr("height", 1200)
                .attr("text-align", "center");    

var labelLine = svgContainer.append("line")
                .attr("x1", 10)
                .attr("y1", 10)
                .attr("x2", 30)
                .attr("y2", 30)
                .attr("stroke-width", 2)
                .attr("stroke", "black")
                 .style("visibility", "hidden")
                .transition()
                .delay(1500)
                .style("visibility", "visible")
}
function drawline(){
  //your stuff
  setTimeout(drawline, 1500);
}