我正在使用幻像保存多次交易的pdf,但是有一天我注意到一些奇怪的事情,假设有两个页面A和B,那么我想将其捕获为pdf,但是当A.pdf和B.pdf时创建后,它们都显示在页面B。仅在我同时调用它们时发生。
示例代码:
function testPhantom(i)
{
var phantom = require('phantom');
phantom.create()
.then(function(ph){phInstance = ph; return ph.createPage();})
.then(function(page){
page.property('viewportSize', {width: "210mm", height: "297mm"});
page.property('paperSize', {format: 'A4', orientation: 'portrait', margin: '1cm'});
pageInstance = page;
if (i == 1)
{
return page.open('http://www.google.com/');
}
else if (i == 2)
{
return page.open('https://www.facebook.com/');
}
})
.then(function(status){
console.log(status);
return pageInstance.render('test'+i+'.pdf');
})
.then(function(){
// phInstance.exit();
})
.catch(function(error){
console.log(error);
// phInstance.exit();
});
}
testPhantom(1);
testPhantom(2);
使用此代码,无论是Google还是Facebook。
如果我在函数上调用exit,警告将显示为
warn: exit() was called before waiting for commands to finish. Make sure you are not calling exit() prematurely
或错误为
Error: Error reading from stdin: Error: This socket has been ended by the other party
我该如何拥有幻像的不同实例,这样它们才能正确执行
答案 0 :(得分:2)
我认为您应该将phInstance
和pageInstance
设为局部变量。像这样:
var phInstance;
var pageInstance;
var phantom = require('phantom');
etc.