nodejs phantomjs warn:exit()在等待命令完成之前被调用.确保您不会太早调用Exit()



尝试使用nodejs使用phantomjs来检查网站加载时间。

,但在

之后得到了此消息
phantom_instance.exit();

在承诺返回后已经尝试运行此行

这是我的代码:

function timer(url) {
return new Promise(function(resolve, reject) {
    let phantom_instance = null;
    let sitepage = null;
    let start_time = null;
    let end_time = null;
    let interval_obj = null;
    let loading_time = 0;
    phantom.create()
        .then(function(instance) {
            phantom_instance = instance;
            return phantom_instance.createPage();
        })
        .then(function(page) {
            sitepage = page;
            page.property('viewportSize', {
                width: 1280,
                height: 1024
            })
            start_time = Date.now();
            return page.open(url);
        })
        .then(function(status) {
            return new Promise(function(resolve, reject) {
                if (status == 'success') {
                    interval_obj = setInterval(function() {
                        //tell the browser to return document.readyStatue
                        sitepage.evaluate(function() {
                            return document.readyState;
                        })
                        .then(function(ready_state) {
                            if (ready_state == "complete") {
                                end_time = Date.now();
                                sitepage.close();
                                clearInterval(interval_obj);
                                loading_time = end_time - start_time;
                                return resolve(loading_time);
                            } else {
                                console.log(ready_state);
                            }
                        })
                    }, 1000);
                } else {
                    //phantom_instance.exit();
                    return reject(status);
                }
            });
        })
        .then(function(loading_time) {
            console.log("[Speed Tester] Completed in : " + loading_time);
            phantom_instance.exit();
            return resolve({time:loading_time});
        })
});
}

有什么想法吗?

谢谢。

我可以通过执行var promise = page.close();并等待在执行phantom_instance.exit()之前解决的承诺来避免上述警告。

最新更新