Я пытаюсь реализовать число слов в формате PDF в Javascript. Я столкнулся с pdf.js, который использует обещания. Есть ли способ подождать, пока скрипт будет выполнен, прежде чем возвращать счет? Я знаю, что это противоречит идее обещаний, но другие читатели js pdf там либо производят кучу тарабарщины, либо ничего не возвращают. В своем нынешнем виде функция всегда возвращает количество слов 0.Сложности с pdf.js обещает
function countWords(pdfUrl){
var pdf = PDFJS.getDocument(pdfUrl);
var count = 0;
pdf.then(function(pdf) {
var maxPages = pdf.pdfInfo.numPages;
for (var j = 1; j <= maxPages; j++) {
var page = pdf.getPage(j);
var txt = "";
page.then(function(page) {
var textContent = page.getTextContent();
textContent.then(function(page){
for(var i=0;i<page.items.length;i++){
txtadd = page.items[i].str
txt += txtadd.replace(/[^a-zA-Z0-9:;,.?!-() ]/g,'');
}
count = count + txt.split(" ").length;
})
})
}
return count;
});
}
Вам нужно инвертировать поток т.е. логики, в котором нуждается 'count' должен быть в«то», который следует этот счетчик расчет. – Vasan
Как мне это сделать? Я делаю этот метод в объекте и называю его «потом»? Это какой-то код, который я получил от Spring.io, это то, что вы имеете в виду? var приветствиеPromise = sayHello(); приветствиеPromise.then (функция (приветствие) { console.log (приветствие); // 'hello world' }); –
Что-то в этом роде. В принципе, ваш метод подсчета возвращает Promise (вместо самого счета) с разрешенным счетчиком ('resolve (count)'). Затем вы добавляете блок .then к этому возвращенному обещанию и делаете что-то со счетом внутри блока. – Vasan