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



我正在尝试将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);

"there"出现在"here"之前,所以PNG为空。是否有可能管道内存缓冲区到PNG解析器,这样我就不必做回调架构?

没有办法使异步方法同步。

有一些库,如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
});

相关内容

  • 没有找到相关文章