【发布时间】:2020-03-11 00:45:56
【问题描述】:
var pdfParser = require('pdf-parser')
var fs = require('fs')
var PDF_PATH = __dirname + '/pdfs'
var results = []
var failed = []
fs.readdir(PDF_PATH, function(err, files){
if(err){
return console.log(err)
}
for(const file of files){
let the_ent = {
'name': '',
'other data': []
}
pdfParser.pdf2json(PDF_PATH + '/' + file, function(error, pdf){
if(error != null){
console.log(error)
}else if(pdf['pages'] == undefined){
failed.push(file)
console.log(file +' failed')
}else{
//populate 'results' array
}
console.log(/*pdf_data*/)
results.push(/*pdf_data*/)
})
}
console.log(results)
console.log(failed)
results = JSON.stringify(results)
//fs.writeFileSync() write results to json
})
今天早上我不知道我怎么了,我不知道如何异步编写这个;显然,脚本一执行,底部的日志/写入文件就会触发。
我尝试过包装异步函数并等待 readdir / pdf 解析而不是使用回调 - 显然不正确。我只是想解析文件夹中的每个 pdf - 将我想要的内容推送到一些数组,然后在循环完成 zzz 后记录它们。
【问题讨论】:
-
使用
utils.promisify,您可以承诺所有同步功能。 -
请参阅How do I convert an existing callback API to promises? 以便能够使用
await -
上面的示例代码中有许多语法错误。请您为用户修复和格式化。
-
完成 - 谢谢/抱歉。
标签: javascript node.js asynchronous promise callback