Моя основная цель - использовать PDF.js и отправить проанализированные PDF-данные в интерфейс. Библиотека PDF.js работает над обещаниями и возвращает данные из файла по номеру страницы. Вот где моя проблема. Я не очень хорошо знаком с обещаниями и создаю в них циклы для возвращения данных. В настоящий момент мой код выглядит так:
var pdf = path.join(__dirname, '../../testoutput.pdf');
pdfJsLib.getDocument(pdf).then(function(doc){
var promises = [];
for(i = 1; i <= doc.numPages; i++){
//promises.push(doc.getPage(i));
doc.getPage(i).then(function(page){
promises.push(page.getTextContent());
var response = [];
if(i == doc.numPages + 1){
var promiseLimiter = promises.length;
Promise.all(promises).then(function(data){
response.push(data[0]);
if(promiseLimiter == doc.numPages){
res.status(200).json(response);
}
})
}
})
Я пытаюсь передать page.getTextContent() информацию в массив и отправить массив как ответ, но я понимаю, что я делаю это неправильно. Любые идеи, как заставить цикл работать с обещаниями в этом случае?
Похоже, вы хотели бы сделать что-то вроде этого
var pdf = path.join(__dirname, '../../testoutput.pdf');
pdfJsLib.getDocument(pdf).then(function(doc){
var promises = [];
var promiseLimiter ;
for(i = 1; i <= doc.numPages; i++){
//promises.push(doc.getPage(i));
var p = doc.getPage(i).then(function(page){
return page.getTextContent();
var response = [];
if(i == doc.numPages + 1){
promiseLimiter = promises.length;
}
})
promises.push(p);
}
Promise.all(promises).then(function(data){
if(promiseLimiter == doc.numPages){
res.status(200).json(data);
}
})