我是Javascript的新手,我非常熟悉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程序调用{{1}}。
答案 0 :(得分:1)
试试这个
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 :(得分:1)
Javascript&#39; s setTimeout
实际上与Thread.sleep完全不同。 Javascript是单线程的,setTimeout
只是在提供的毫秒数之后注册要执行的回调,然后继续执行setTimeout
调用之后的代码。它并没有停止线程的执行。
答案 2 :(得分:0)
因为程序在允许打印任何内容之前完成。
你应该推迟phantom.exit()
。例如,您可以将其包含在setTimeout
中,在完成循环后将其延迟足够长的时间。
例如,用这个更改你的最后一行:
setTimeout(phantom.exit, 5000)
五秒后幻像将关闭,您应该会看到控制台中打印的值。
答案 3 :(得分:0)
试试这个
var i = 0;
function doThing(){
console.log(i);
i++;
if(i<20) setTimeout(doThing, 100);
if(i>=20) phantom.exit();
}
setTimeout(doThing, 100);
答案 4 :(得分:0)
Java和javascript是不同的语言。因此,您无法比较这些语言的功能。 setTimeout在指定的时间间隔后执行代码块。