nodejs stream在未启动管道后完成回调

Ste*_*nko 7 pipe stream node.js

保存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);
Run Code Online (Sandbox Code Playgroud)

但是第二个嵌套函数中的代码永远不会启动.pdf是来自pdfkit库的对象.我该如何解决?

UPD:这种方法也不起作用:

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);
Run Code Online (Sandbox Code Playgroud)

std*_*b-- 6

您需要finish在管道对象上捕获事件,而不是在 pdf 对象上:

console.log("saving file");

pdf
  .pipe( fs.createWriteStream("./test2.pdf") )
  .on( 'finish', function(){
    console.log("Finished");
  });
pdf.end();

console.log("After save");
Run Code Online (Sandbox Code Playgroud)