Я не уверен, где я ошибаюсь, но я думаю, что прослушиватель событий вызывается несколько раз и разбора файлов несколько раз.Как использовать функцию Node.JS foreach с событием listerner
У меня есть пять файлов в каталоге, и они получают синтаксический анализ. Однако файл pdf с массивом 0 анализируется один раз, а второй - два и три раза три раза.
Я хочу, чтобы каждый файл в каталоге обрабатывался один раз и создавал текстовый файл, извлекая данные из pdf.
Идея состоит в том, чтобы разобрать pdf, получить содержимое в виде текста и преобразовать текст в json в определенном формате.
Чтобы сделать это простым, план состоит в том, чтобы выполнить одну задачу сначала, а затем использовать вывод из приведенного ниже кода для выполнения следующей задачи.
Надеюсь, что кто-нибудь может помочь и указать, где я иду не так, и немного рассказать о своей ошибке, поэтому я понимаю это. (Новый в JS и Node)
С уважением, Джай
Использование модуля здесь: https://github.com/modesty/pdf2json
var fs = require('fs')
PDFParser = require('C:/Users/Administrator/node_modules/pdf2json/PDFParser')
var pdfParser = new PDFParser(this, 1)
fs.readdir('C:/Users/Administrator/Desktop/Project/Input/',function(err,pdffiles){
//console.log(pdffiles)
pdffiles.forEach(function(pdffile){
console.log(pdffile)
pdfParser.once("pdfParser_dataReady",function(){
fs.writeFile('C:/Users/Administrator/Desktop/Project/Jsonoutput/'+pdffile, pdfParser.getRawTextContent())
pdfParser.loadPDF('C:/Users/Administrator/Desktop/Project/Input/'+pdffile)
})
})
})
Код, который у вас там, выглядит правильно для меня. Я попытался найти документацию для 'pdfParser.once', но не смог найти ее. У меня есть подозрение, что он, вероятно, имеет какое-то отношение к '.once' api. –
Привет, Сэмюэль, спасибо за ввод. Если я удаляю .once и использую .on, чтобы проверить, когда прослушиватель событий включен, файлы обрабатываются несколько раз. Более 20 раз, поэтому в текстовом файле я получаю что-то вроде этого имени: testtestetstetsttesttesttest, а не только как имя: test. – user1222256
Возможно, ошибка для модуля анализатора, который вы используете. Если производительность не вызывает беспокойства, вы можете подумать об этом синхронно и посмотреть, работает ли она. Если вы заинтересованы в синхронном управлении асинхронными вызовами, я могу исправить несколько идей в качестве решения. –