我有一个项目清单,每个项目都有一个说明清单。每一项都会被打印成PDF文件,每条指令占一页并保存在本地。我现在拥有的是一个 for 循环,它查询数据库以获取每个项目的指令,并在填充 PDF 后将其输出到路径。问题是由于查询是异步的,只能打开最后一个通过管道传输的 PDF,其余的都已损坏。我该如何克服这个?我的代码如下所示。
var counter = 0
for (var o=0; o<itemList.length; ++o){
Steps.find( {itemid:itemid[o], sort: "sequence asc"} ).exec( function(err,steps){
doc[counter] = new PDFDocument();
if(!err){
doc[counter].pipe( fs.createWriteStream(path + "DocName" + counter + ".pdf") );
for (var x=0; x<steps.length; ++x){
doc[counter].text("Instructions: " + steps[x].instruction.font('Times-Roman', 13);
}
***/*if (counter == itemList.length-1){
doc[counter].end();
}*/***
//That is the problem, i shouldn't have done the check and end the doc immediately, that solved the issue.
doc[counter].end();
++counter;
}
}
}