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);
}