node.js中的同步生成

时间:2012-06-15 10:46:36

标签: node.js

我想在节点中创建子进程,并在光纤中阻塞,直到进程终止。他们我理解它的方式,看起来应该是这样的:

var child_process = require ("child_process");
var Fiber = require ("fibers");
var Future = require ("fibers/future");

var ls = Fiber (function () {
    var lsproc = child_process.spawn ("ls");
    var lsonSync = Future.wrap (lsproc.on);

    console.log ("return: " + lsonSync ("exit").wait ());
}).run ();

节点的响应是:

TypeError: Object #<Object> has no method 'emit'

我认为这与我正在包装实例方法而不是函数这一事实有关,但我不确定如何继续。

1 个答案:

答案 0 :(得分:6)

有时你需要问问题才能找到答案。

on - 方法绑定到lsproc之后将其包装在将来解决问题:

var child_process = require ("child_process");
var Fiber = require ("fibers");
var Future = require ("fibers/future");

var ls = Fiber (function () {
    var lsproc = child_process.spawn ("ls", ["/etc"]);
    var lsonSync = Future.wrap (lsproc.on.bind (lsproc));

    console.log ("return: " + lsonSync ("exit").wait ());
}).run ();