V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tang3w
V2EX  ›  Node.js

问一个 node.js 的问题

  •  
  •   tang3w · 2014-05-29 18:36:59 +08:00 · 2808 次点击
    这是一个创建于 4025 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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!');
    });
    });
    view raw node_error.js hosted with ❤ by GitHub


    下面这段代码可以正常工作:

    #!/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!');
    });
    view raw node_correct.js hosted with ❤ by GitHub


    gm.size() 方法应该是异步的,为什么把逻辑写到异步方法里面会导致挂起呢?和 fs 模块有什么关系吗?
    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   981 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 22:31 · PVG 06:31 · LAX 15:31 · JFK 18:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.