我试图在Javascript中实现pdf字数统计。我遇到了使用承诺的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
我该怎么做?我是否把这个方法变成一个对象并且在它上面调用“then”?这是我从Spring.io获得的一些代码,这是你的意思吗? var greetingPromise = sayHello(); greetingPromise.then(function(greeting){ console.log(greeting); //'hello world' }); –
就是这样的。基本上,你的计数方法返回一个Promise(而不是计数本身),计数已解决('resolve(count)')。接下来,你为返回的promise添加一个.then块,并在then块中执行count。 – Vasan