我試圖做的是寫一個函數,例如:如何編寫JavaScript函數,將等待定毫秒
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);
}
這段代碼是應該做的是打印一個字母在同一時間到屏幕上,以半秒在每個字母之間打印
爲什麼你不加'的console.log(3)''裏面時setTimeout'你不希望它在'2'之前打印? –