Node js流中的执行顺序

时间:2016-04-29 11:23:27

标签: javascript node.js express stream graphicsmagick

我想在将图像保存到磁盘之前验证图像。我正在使用GM库。



// Running an Express app

app.post('/image', function(req, res) {
  var stream = 
    gm(req)
     .size({ bufferStream: true }, function(err, size) {    
       if (size.width > 2000) {
        return res.send('Too big, aborting upload!');
       }
     })
     .stream(function(err, stdout, stderr) { 
      save(stdout, res);    
    });    
});

function save(stream, res) {
  var file = fs.createWriteStream('./test-image.png');
  stream.pipe(file);
  res.send('Saving image to disk');
}




我的问题是我在验证图像之前执行save功能。如何才能确保流只在有效时才会继续?

1 个答案:

答案 0 :(得分:1)

GM将所有操作添加到列表中并在写入操作之前执行它们,因此这种行为是有意义的。这是一个解决方法:

location="Milton"