У меня проблема с созданием документа в формате html-pdf.Проблема в том, что часто код выполняется быстро, чтобы завершить процесс создания PDF-документа.Процессы состоят из построения HTML-строки путем замены заполнителей в HTML-файле.Ниже вы видите код, который происходит потом.
Object.keys(setter).forEach(function(element, key, _array) {
var regex = new RegExp(element, "g");
data = data.replace(regex, setter[element])
})
var result = data;
fs.writeFile(mergeFileRes, result, 'utf8', function (err) {
if(err) {
console.log(err);
return;
} else {
let html2 = fs.readFileSync(mergeFileRes, 'utf8');
let options = {
format: 'a4' ,
"directory" : "/tmp",
};
if(html2){
pdf.create(html2, options).toStream(function(err, stream2){
if(err) console.log(err);
stream2.pipe(res);
stream2.on('end', function () {
try{
fs.unlink(mergeFileRes)
console.log(3090, "deleted file");
}
catch (err){
console.log(3090, "Did not delete file");
}
});
});
} else {
}
}
});
Моя проблема в том, что во многих случаях переменная html2 еще не создана до запуска процесса pdf.create.Вероятно, это связано с тем, что readFileSync занимает слишком много времени для завершения.
Мне было интересно, как я могу это исправить.Как я могу заставить pdf.create ждать завершения readFileSync и заполнения переменной html2.