setTimeout()在JavaScript中如何工作?
在我的代码中,我想画一条线。为此,我根据直线方程来放置点。我还希望在打印下一个点之前延迟100毫秒。因此,我使用了setTimeout()。但当我运行这段代码时,首先它会等待一段时间,然后一次打印所有的点,没有100毫秒的延迟。 这是我画线的代码:setTimeout()在JavaScript中如何工作?,javascript,html,css,settimeout,Javascript,Html,Css,Settimeout,在我的代码中,我想画一条线。为此,我根据直线方程来放置点。我还希望在打印下一个点之前延迟100毫秒。因此,我使用了setTimeout()。但当我运行这段代码时,首先它会等待一段时间,然后一次打印所有的点,没有100毫秒的延迟。 这是我画线的代码: function drawLine(x1, y1,x2,y2){ var x, y, m; m=(y2-y1)/(x2-x1); for(x=x1;x<=x2;x++){ y=(m*(x-x1)+y1
function drawLine(x1, y1,x2,y2){
var x, y, m;
m=(y2-y1)/(x2-x1);
for(x=x1;x<=x2;x++){
y=(m*(x-x1)+y1)/6;
setTimeout(drawPoint,100,x,y);
}
}
function drawPoint(a,b){
main=document.getElementById("main"); //parent div tag in which children div tags are to be appended
var children=main.childNodes;
var child=document.createElement("div");
child.className="anime";
child.style.left=a+"px";
child.style.top=300-b+"px"; //300 is some offset
main.appendChild(child);
}
功能绘制线(x1、y1、x2、y2){
变量x,y,m;
m=(y2-y1)/(x2-x1);
对于(x=x1;x
for loop
是非阻塞的
,循环中的所有setTimeout
实例将在指定的持续时间完成后执行
维护一个计数器
,并将其用作setTimeout()
中的毫秒
参数,以便循环中的每个处理程序都将以100的倍数调用(100200300,…)
功能绘制线(x1、y1、x2、y2){
变量x,y,m;
m=(y2-y1)/(x2-x1);
var计数器=1;
对于(x=x1;x
for loop
是非阻塞的
,循环中的所有setTimeout
实例将在指定的持续时间完成后执行
维护一个计数器
,并将其用作setTimeout()
中的毫秒
参数,以便循环中的每个处理程序都将以100的倍数调用(100200300,…)
功能绘制线(x1、y1、x2、y2){
变量x,y,m;
m=(y2-y1)/(x2-x1);
var计数器=1;
对于(x=x1;xUse而不是setTimeoutUse而不是setTimeoutfor loop
是非阻塞的
setTimeout不会暂停循环,因此它们实际上都是在同一时刻以相同的延迟设置的。此外,并非所有浏览器都支持2以外的附加参数。谢谢@RayonDabre,我该怎么办?检查循环是否为非阻塞setTimeout不会暂停循环,因此它们实际上都是在同一时刻以相同的延迟设置的。此外,并非所有浏览器都支持2以外的附加参数。谢谢@RayonDabre,我该怎么办?检查这不是一个有用的答案。这不是一个有用的答案我回答。