我正在尝试将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解析器,以便我不必进行回调架构?
答案 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
});