【问题标题】:Show progress on node.js child_process.exec?在 node.js child_process.exec 上显示进度?
【发布时间】:2012-03-21 10:40:25
【问题描述】:

我最近询问/接受了我之前提出的问题的答案:How can I replicate the functionality of a wget with nodejs

现在,我的脚本运行良好,但我希望能够向用户显示下载的百分比。我不确定这是否暴露给我们(我在文档中没有看到),但我想我还是会在这里问。希望得到一些帮助!

谢谢!

【问题讨论】:

    标签: javascript node.js


    【解决方案1】:

    是的,你可以。与child_process.spawn。当child_process.exec 执行命令并缓冲输出时,spawn 为您提供dataerrorend 上的事件。因此,您可以聆听并计算您的进度。 node docs for spawn 中有一个基本示例。

    更新:我看到了你的另一个问题。您可以为此使用wget,但我推荐使用nodejs 模块request。以下是使用请求获取文件的方法:

    var request = require("request");
    
    request(url, function(err, res, body) {
      // Do funky stuff with body
    });
    

    如果您想跟踪进度,请将回调传递给onResponse

    function trackProgress(err, res) {
      if(err)
        return console.error(err);
    
      var contentLength = parseInt(res.headers["content-length"], 10),
          received = 0, progress = 0;
      res.on("data", function(data) {
        received += data.length;
        progress = received / contentLength;
        // Do funky stuff with progress
      });
    }
    
    request({url: url, onResponse: trackProgress}, function(err, res, body) {
      // Do funky stuff with body
    });
    

    【讨论】:

    • 您是在说“ spawn 为您提供有关数据、错误和结束的事件”。那么是否有可能使用 spawn 获得 python 脚本执行的进度?如果是,你能回答这个问题吗? stackoverflow.com/questions/33802895/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多