【发布时间】:2016-09-19 18:21:12
【问题描述】:
我试图嵌套几个回调,目的是使用 POST 请求以编程方式导航页面。我有一个我正在尝试下载的不同文件的列表,并且想为每个文件分配一个不同的文件名,以便我可以进行异步下载调用并对它们执行 OCR。
实际下载PDF的回调在这里:
filename = "doodle" + Math.floor((Math.random() * 100) + 1) + ".pdf";
request.post(
{
url:'https://ecorp.sos.ga.gov/BusinessSearch/DownloadFile',
form: {
'documentId': body
},
headers: {
'Referer': 'https://ecorp.sos.ga.gov/BusinessSearch/BusinessFilings'
}
}, getPDF).pipe(fs.createWriteStream(filename));
请注意,请求会将结果页面发送到 getPdf 函数,该函数实际上会在发出请求后为 OCR 打开 PDF。目前我在 OCR 方法中有一个硬编码的文件名,因为我不知道如何将附加变量传递给回调函数。我希望能够写入一个随机生成的文件,并在回调方法中检索该文件名。
function getPDF (error, response, body) {
if(!error){
console.log(body);
filename = "/doodle" + Math.floor((Math.random() * 100) + 1) + ".pdf";
//console.log(__dirname + filename);
/*pdfText(__dirname + "/doodle.pdf", function(err, chunks) {
//console.log(chunks);
});*/
var pdf_path = __dirname + filename;
//option to extract text from page 0 to 10
var option = {from: 0, to: 10};
var pdf_body;
pdfUtil.pdfToText(pdf_path, option, function(err, data) {
pdf_body = data;
var result;
try{
var namez = /AUTHORIZED SIGNATURE:\s+(.+?)\s{2}/.exec(data)[1];
var emailz = /Email: (.+?)\s{2}/.exec(data)[1];
result = {query:query, info:{name: namez, email: emailz}};
} catch (err){
//result = {query:query, error:"non-selectable text in PDF"};
}
results.push(result);
//console.log(JSON.stringify(result));
});
}
}
我使用的库叫做request
文档显示如下:
回调参数有 3 个参数:
An error when applicable (usually from http.ClientRequest object) An http.IncomingMessage object The third is the response body (String or Buffer, or JSON object if the json option is supplied)
【问题讨论】:
标签: javascript callback request