nodejs内存缓冲区同步.pipe()

时间:2015-08-21 09:17:54

标签: node.js stream buffer pdfkit

我正在尝试将pdfkit从png-js迁移到pngsj2,因为png-js不支持隔行扫描png。我需要以同步方式加载PNG文件。我试着这样做:

var fs = require('fs'),
    PNG = require('pngjs2').PNG;
var stream = require('stream');
var bufferStream = new stream.PassThrough();
var buf = fs.readFileSync('./logs/rid12.png');
bufferStream.end(buf);
var png = null;
bufferStream.pipe(new PNG())
    .on('parsed', function() {
        console.log("here");
        png = this;
    });

console.log("there",png);

"还有"发生在" here"之前,所以png为空。是否可以将内存缓冲区管道传输到PNG解析器,以便我不必进行回调架构?

1 个答案:

答案 0 :(得分:0)

无法使异步方法同步。

https://github.com/scriby/asyncblock之类的图书馆可以伪造它。

asyncblock(function(flow) {

    var png = null
    flow.sync( bufferStream.pipe(new PNG())
      .on('parsed', function() {
        console.log("here");
        png = this;
        flow.callback()
      })
    );

   // png not null
});