【发布时间】:2016-05-05 04:28:28
【问题描述】:
我试图做的是编写一个函数,例如:
function delay(delay){
var date = new Date();
var startTime = date.getTime();
var currDate=new Date();
var current=currDate.getTime();
while (current<=startTime+delay){
currDate=new Date();
current=currDate.getTime();
}
}
在执行此类操作时,此代码似乎可以完美运行
console.log("1");
delay(500);
console.log("2");
当做这样的事情时,它会打印到控制台1,然后等待半秒,然后打印出2。问题是我不想console.log,我想document.getElementById("id").innerHTML+="a";。当尝试围绕延迟功能时,页面会等待所有延迟完成,然后再加载任何 a。
我的问题如下:
是否有一个好的方法来编写这样的函数,或者已经有一个函数可以允许所有之前的代码运行,导致指定的延迟,然后运行它之后的代码。我试过使用setTimeout,但问题是运行这样的东西:
console.log("1");
setTimeout(function(){
console.log("2");
}, 2000);
console.log("3");
导致它打印 1,然后打印 3,然后等待 2 秒并打印 2,而不是执行 1,等待 2 秒,打印 2,打印 3
澄清:我试图实现这一点的方式是:
for (i=0;i<10;i++){
document.getElementById("text")+="a";
delay(500);
}
这段代码应该做的是一次打印一个字母到屏幕上,每个字母打印之间有半秒
【问题讨论】:
-
如果您不想在
2之前打印,为什么不在setTimeout中添加console.log(3)?
标签: javascript jquery delay settimeout wait