PhantomJS:setTimeout仍然不工作吗?

PhantomJS:setTimeout仍然不工作吗?,phantomjs,browser-automation,headless-browser,Phantomjs,Browser Automation,Headless Browser,网上有很多帖子,这是PhantomJS中的一个严重错误,它忽略了setTimeout中的延迟。他们中的大多数人只有几岁。我本以为这个bug现在已经修复了,但我似乎遇到了它: 以下是我的PhantomJS测试代码,与PhantomJS v2.1.1一起使用: page.open(uri, function (status) { var content = page.content; console.log('page loaded'); if (status !== "s

网上有很多帖子,这是PhantomJS中的一个严重错误,它忽略了setTimeout中的延迟。他们中的大多数人只有几岁。我本以为这个bug现在已经修复了,但我似乎遇到了它:

以下是我的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还没有修复吗?我正在使用OSX并通过终端调用phantomJS


希望有一个解决办法!提前感谢大家提供的任何信息。

我通过滚动我自己的设置超时代码修复了它:

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));
}

我通过滚动我自己的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);
请尝试以下代码:

window.setTimeout(function () { console.log('set timeout test') }, 100);