3

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

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'

我认为这与我包装实例方法而不是函数的事实有关,但我不确定如何进行。

4

1 回答 1

8

有时您需要提出问题才能让答案突然出现在您的脑海中。

在将来包装它之前将on-method绑定到可以解决问题: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 ();
于 2012-06-15T10:54:05.263 回答