Javascript 然后在JS promise中无法按预期工作
我试图从pdf中提取文本,然后返回一个数字,该数字表示我定义的正则表达式匹配了多少pdf页面 我的问题是,我的函数不是定期检查单个页面的文本是否是匹配的一部分,而是将片段划分为比页面更小的部分。计数仅在读取整个页面后增加Javascript 然后在JS promise中无法按预期工作,javascript,regex,promise,es6-promise,pdf.js,Javascript,Regex,Promise,Es6 Promise,Pdf.js,我试图从pdf中提取文本,然后返回一个数字,该数字表示我定义的正则表达式匹配了多少pdf页面 我的问题是,我的函数不是定期检查单个页面的文本是否是匹配的一部分,而是将片段划分为比页面更小的部分。计数仅在读取整个页面后增加 getnopages: function(){ var fulltext = "" var partialmatch; var somerx = /something/ return pdfjs.getDocument(da
getnopages: function(){
var fulltext = ""
var partialmatch;
var somerx = /something/
return pdfjs.getDocument(data).then(function(pdf) {
var pages = [];
pageNumbers = [];
for (var i = 0; i <= 6; i++) {
pages.push(i);
}
var found = false;
var count = 1;
return Promise.all(pages.map(function(pageNumber) {
pageNumbers.push(pageNumber);
return pdf.getPage(pageNumber + 1).then(function(page)
return page.getTextContent().then(function(textContent) {
return textContent.items.map(function(item) {
fulltext+=item.str+'&&&';
return item.str;
}).join('&&&');
});
}).then(function(){
count++;
console.log('the count is ' + count)
var partialmatch;
try {
partialmatch = fulltext.match(somerx)[0]
console.log('the match: ' + partialmatch)
var full = fulltext.slice(0, fulltext.length-3)
console.log('the full text ' + full)
if (fulltext && partialmatch!==full && !found){
found = true;
console.log('now we found our number: ' + count) // this finds where the full text differs from the partial text but returns a number too large to be a page number
}
}
catch(e){
console.log(e)
}
});
}));
}
getnopage:function(){
var fulltext=“”
var局部匹配;
var sometrx=/something/
返回pdfjs.getDocument(数据)。然后返回函数(pdf){
var页面=[];
页码=[];
对于(var i=0;i我真的不知道代码中的问题出在哪里,但我只是建议您避免太多带有承诺的嵌套。您可以通过如下链接承诺来减少嵌套:
getnopages: function() {
var somerx = /something/
return pdfjs.getDocument(data).then(function(pdf) {
var pages = [];
pageNumbers = [];
for (var i = 0; i <= 6; i++) {
pages.push(i);
}
var found = false;
var count = 1;
var promises = pages.map(pageNumber => {
pageNumbers.push(pageNumber);
return pdf.getPage(pageNumber + 1).then(page => {
return page.getTextContent();
}).then(textContent => {
return textContent.items.map(item => {
fulltext += item.str +'&&&';
return item.str;
}).join('&&&');
});
});
return Promise.all(promises).then(() => {
...
});
});
}
getnopage:function(){
var sometrx=/something/
返回pdfjs.getDocument(数据)。然后返回(函数(pdf){
var页面=[];
页码=[];
对于(var i=0;i{
pageNumber.push(pageNumber);
返回pdf.getPage(页码+1)。然后(页码=>{
返回page.getTextContent();
})。然后(textContent=>{
返回textContent.items.map(item=>{
全文+=item.str+'&&&&';
返回item.str;
}).join('&&');
});
});
返回承诺。全部(承诺)。然后(()=>{
...
});
});
}
不清楚全文是在哪里定义的,但看起来它是以随机顺序从所有页面中累积文本(因为getPage/getTextContent对所有页面一次调用,并且可以以任何顺序解析)@async5我无意中遗漏了变量声明——只是将它们重新编辑了进来。您能建议一种方法来确保全文按正确的顺序返回文本吗?