如何在page.render()之后开始下载文件?

时间:2013-11-17 21:31:18

标签: node.js phantomjs

下载在文件(* .pdf)渲染之前开始。如何在呈现后开始下载文件?

var phantom = require('phantom');
phantom.create(function(ph) {
    ph.createPage(function(page) {
        page.open("http://localhost:3000", function(status) {
            if (status !== 'success') {
                console.log('Unable to access the network!');
            } else {
                page.render('filename.pdf');
            }
            ph.exit();
        });
    });
});

res.download('filename.pdf');

EDIT1 我解决了我的问题,不是最好的决定,但它对我有用

var downloadRe = function (){
setTimeout(function(){
        res.download('name.pdf', function(err){
            if (err) {
                console.log(err);
                setTimeout(function(){
                    downloadRe();
                },1000);
            } else { 
                fs.unlink('name.pdf',function(err){
                    console.log(err);
                });
            }
        });
    },1000);
}
downloadRe();

1 个答案:

答案 0 :(得分:0)

Node默认是异步引擎。你可能有竞争条件。我对phantomJS没有任何经验,但我认为在页面完全渲染后你必须在客户端有一个下载请求才能达到你想要的效果。否则,您无法从服务器了解页面呈现的状态。