[英]setTimeout is not working
我是Java語言的新手,並且對Java中的Thread.sleep
非常熟悉。 據我所知,Javascript使用setTimeout
類似於Thread.sleep
。
我正在使用phantomjs
打印我的線程:
function doThing(i){
setTimeout(function(){
console.log(i);
}, 100);
}
for(var i=1; i<20; i++){
doThing(i);
}
phantom.exit();
它什么都不打印!
你能告訴我,這是怎么了? :(
幫助將不勝感激!
編輯:
我正在使用Java程序調用phantomjs script
。
嘗試這個
function doThing(i, last){
setTimeout(function(){
console.log(i);
if (last) phantom.exit();
}, 100 * i);
}
for(var i=1; i<20; i++){
doThing(i, i >= 19);
}
此代碼有2個修復程序(與原點相比):
Javascript的setTimeout
實際上與Thread.sleep完全不同。 Javascript是單線程的,並且setTimeout
僅在提供的毫秒數后注冊要執行的回調,然后在setTimeout
調用之后繼續執行代碼。 它不會停止線程的執行。
因為程序完成后才允許它打印任何內容。
您應該延遲phantom.exit()
。 例如,您可以將其包含在setTimeout
,這會在完成循環后將其延遲足夠長的時間。
例如,使用以下命令更改最后一行:
setTimeout(phantom.exit, 5000)
五秒鍾后,幻像將關閉,您應該在控制台中看到打印的值。
嘗試這個
var i = 0;
function doThing(){
console.log(i);
i++;
if(i<20) setTimeout(doThing, 100);
if(i>=20) phantom.exit();
}
setTimeout(doThing, 100);
Java和javascript是獨立的語言。 因此,您無法比較這些語言的功能。 setTimeout在指定的時間間隔后執行代碼塊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.