管道未启动后nodejs流完成回调
nodejs stream finish callback after pipe is not launched
保存 pdf 文件后我需要做一些整理工作:
docx2pdf(doc, function (pdf) {
console.log("saving file");
var pdfFile = fs.createWriteStream("./test2.pdf");
pdf.on('finish',function(){
console.log("Finished");
process.exit();
}).pipe(pdfFile);
pdf.end();
console.log("After save");
}, true, true);
但是第二个嵌套函数中的代码永远不会启动。 pdf 是 pdfkit 库中的对象。我该如何解决?
更新:这种方法也不起作用:
docx2pdf(doc, function (pdf) {
console.log("saving file");
var pdfFile = fs.createWriteStream("./test2.pdf");
pdfFile.on('finish',function(){
console.log("Finished");
process.exit();
});
pdf.pipe(pdfFile);
//pdf.end();
console.log("After save");
}, true, true);
pdf
意味着 从 读取,而不是 写入 。这意味着您应该将其视为可读流,因此改为在 pdfFile
上监听 finish
并删除 pdf.end()
.
您需要在 pipe 对象上捕获事件 finish
,而不是在 pdf 对象上:
console.log("saving file");
pdf
.pipe( fs.createWriteStream("./test2.pdf") )
.on( 'finish', function(){
console.log("Finished");
});
pdf.end();
console.log("After save");
如果 pdf
是一个合适的 NodeJS 流,您可以简单地将其通过管道传输到写入流中并完成。如果您想在保存文件后退出程序,可以在 'close' 上执行此操作。
注意:没有 "after saving" 状态(因为你结束了进程)。您代码中的 console.log("After save")
行在 文件保存之前称为 !
docx2pdf(doc, function (pdf) {
console.log("saving file");
var pdfFile = fs.createWriteStream("./test2.pdf");
pdf.pipe(pdfFile);
pdfFile.on('close',function(){
console.log("Finished");
process.exit();
});
}, true, true);
保存 pdf 文件后我需要做一些整理工作:
docx2pdf(doc, function (pdf) {
console.log("saving file");
var pdfFile = fs.createWriteStream("./test2.pdf");
pdf.on('finish',function(){
console.log("Finished");
process.exit();
}).pipe(pdfFile);
pdf.end();
console.log("After save");
}, true, true);
但是第二个嵌套函数中的代码永远不会启动。 pdf 是 pdfkit 库中的对象。我该如何解决?
更新:这种方法也不起作用:
docx2pdf(doc, function (pdf) {
console.log("saving file");
var pdfFile = fs.createWriteStream("./test2.pdf");
pdfFile.on('finish',function(){
console.log("Finished");
process.exit();
});
pdf.pipe(pdfFile);
//pdf.end();
console.log("After save");
}, true, true);
pdf
意味着 从 读取,而不是 写入 。这意味着您应该将其视为可读流,因此改为在 pdfFile
上监听 finish
并删除 pdf.end()
.
您需要在 pipe 对象上捕获事件 finish
,而不是在 pdf 对象上:
console.log("saving file");
pdf
.pipe( fs.createWriteStream("./test2.pdf") )
.on( 'finish', function(){
console.log("Finished");
});
pdf.end();
console.log("After save");
如果 pdf
是一个合适的 NodeJS 流,您可以简单地将其通过管道传输到写入流中并完成。如果您想在保存文件后退出程序,可以在 'close' 上执行此操作。
注意:没有 "after saving" 状态(因为你结束了进程)。您代码中的 console.log("After save")
行在 文件保存之前称为 !
docx2pdf(doc, function (pdf) {
console.log("saving file");
var pdfFile = fs.createWriteStream("./test2.pdf");
pdf.pipe(pdfFile);
pdfFile.on('close',function(){
console.log("Finished");
process.exit();
});
}, true, true);