Я использую фантом для сохранения 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.
Если я вызову выход из функции, предупреждение будет отображаться как
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
Как я могу иметь различный экземпляр фантома, чтобы они работали правильно