问一个 nodejs 的问题
node 新手一枚,我使用了 gm 库,但是使用的时候遇到一个问题:
下面这段代码不能退出,会挂起,也没有 console.log 输出:
#!/usr/bin/env node
var fs = require('fs');
var gm = require('gm');
var argv = require('optimist')
.demand(1)
.demand('l')
.alias('l', 'label')
.describe('l', 'Specify a label')
.argv;
var file = argv._[0];
var label = argv['label'];
var stream = fs.createReadStream(file);
var magic = gm(stream);
magic.size(function (err, size) {
magic.drawText(40, 30, label).write('./defaults.png', function (err) {
if (!err) console.log('Done!');
});
});
但下面这段代码可以正常工作:
#!/usr/bin/env node
var fs = require('fs');
var gm = require('gm');
var argv = require('optimist')
.demand(1)
.demand('l')
.alias('l', 'label')
.describe('l', 'Specify a label')
.argv;
var file = argv._[0];
var label = argv['label'];
var stream = fs.createReadStream(file);
var magic = gm(stream);
magic.drawText(40, 30, label).write('./defaults.png', function (err) {
if (!err) console.log('Done!');
});
gm.size() 方法应该是异步的,为什么把逻辑写到异步方法里面会导致挂起呢?和 fs 模块有什么关系吗?