PhantomJS:setTimeout 仍然不起作用?
PhantomJS: setTimeout Still Not Working?
网上有很多帖子 documenting PhantomJS 的一个严重错误,忽略了 setTimeout 中的延迟。他们中的大多数只有几岁。我本以为这个错误现在已经修复了,但我似乎遇到了它:
这是我的 PhantomJS 测试代码,与 PhantomJS v2.1.1 一起使用:
page.open(uri, function (status) {
var content = page.content;
console.log('page loaded');
if (status !== "success")
{
phantomResult = JSON.stringify({
"status": status,
"content": "page not opened"
});
console.log(phantomResult);
phantom.exit(1);
}
else
{
content = page.content;
page.onConsoleMessage = function (msg) { console.log(msg); };
console.log('about to try timeout test');
window.setTimeout(console.log('set timeout test'), 100);
console.log('about to try timeout test 2');
window.setTimeout(console.log('set timeout test 2'), 2000);
console.log('about to try timeout test 3');
window.setTimeout(console.log('set timeout test 3'), 4000);
window.setTimeout(console.log(phantom.exit(1)), 6000);
}
});
通过 setTimeout 执行的 console.log 调用会一个接一个地立即执行,它们之间没有延迟。
这个bug还没有修复吗?我正在使用 OS X 并通过终端调用 phantomJS。
希望有解决办法!在此先感谢大家提供任何信息。
我通过滚动我自己的 setTimeout 代码修复了它:
var waitStart = new Date();
var done = false;
var timeNow;
var interval = 1000;
while (!done) {
timeNow = new Date();
done = timeNow - waitStart > interval;
//console.log('timeNow - waitStart = ' + (timeNow - waitStart));
}
试试这个代码:
window.setTimeout(function () { console.log('set timeout test') }, 100);
网上有很多帖子 documenting PhantomJS 的一个严重错误,忽略了 setTimeout 中的延迟。他们中的大多数只有几岁。我本以为这个错误现在已经修复了,但我似乎遇到了它:
这是我的 PhantomJS 测试代码,与 PhantomJS v2.1.1 一起使用:
page.open(uri, function (status) {
var content = page.content;
console.log('page loaded');
if (status !== "success")
{
phantomResult = JSON.stringify({
"status": status,
"content": "page not opened"
});
console.log(phantomResult);
phantom.exit(1);
}
else
{
content = page.content;
page.onConsoleMessage = function (msg) { console.log(msg); };
console.log('about to try timeout test');
window.setTimeout(console.log('set timeout test'), 100);
console.log('about to try timeout test 2');
window.setTimeout(console.log('set timeout test 2'), 2000);
console.log('about to try timeout test 3');
window.setTimeout(console.log('set timeout test 3'), 4000);
window.setTimeout(console.log(phantom.exit(1)), 6000);
}
});
通过 setTimeout 执行的 console.log 调用会一个接一个地立即执行,它们之间没有延迟。
这个bug还没有修复吗?我正在使用 OS X 并通过终端调用 phantomJS。
希望有解决办法!在此先感谢大家提供任何信息。
我通过滚动我自己的 setTimeout 代码修复了它:
var waitStart = new Date();
var done = false;
var timeNow;
var interval = 1000;
while (!done) {
timeNow = new Date();
done = timeNow - waitStart > interval;
//console.log('timeNow - waitStart = ' + (timeNow - waitStart));
}
试试这个代码:
window.setTimeout(function () { console.log('set timeout test') }, 100);