簡體   English   中英

setTimeout不起作用

[英]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個修復程序(與原點相比):

  1. phantom.exit()必須在最后一次操作完成后立即調用(在我的修訂版中,我通過使用標志“ last”解決了此問題,該標志僅在上次迭代時才設置為true);
  2. 最好用稍微不同的超時值調用setTimeout,只是讓它們一個一觸發(雖然不是很關鍵,但還是更好)。

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在指定的時間間隔后執行代碼塊。

http://www.w3schools.com/jsref/met_win_settimeout.asp

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM