【问题标题】:Events in Node.jsNode.js 中的事件
【发布时间】:2016-02-12 09:59:35
【问题描述】:

https://nodejs.org/dist/latest-v5.x/docs/api/child_process.html 的第一个例子如下:

const spawn = require('child_process').spawn;
const ls = spawn('ls', ['-lh', '/usr']);

ls.stdout.on('data', (data) => {
    console.log(`stdout: ${data}`);
});

ls.stderr.on('data', (data) => {
    console.log(`stderr: ${data}`);
});

ls.on('close', (code) => {
    console.log(`child process exited with code ${code}`)
});

这难道不是错的吗?事实上,这个过程(在这种情况下是 ls)可能在人们开始对事件做出反应之前就结束了,所以基本上人们会错过它们。

【问题讨论】:

    标签: node.js eventemitter


    【解决方案1】:

    没有。虽然ls 本身是一个“阻塞”进程,但节点中子进程的生成是异步的,即上面的代码启动一个新进程,注册事件处理程序,然后当进程准备好运行命令时,它将执行ls.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-17
      • 2012-10-20
      • 2012-01-30
      相关资源
      最近更新 更多