node.js中的同步产卵

我想在节点中创build一个subprocess,并阻塞光纤,直到进程终止。 他们的方式我已经明白了,它应该是这样的:

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' 

我认为这与我包装一个实例方法而不是一个函数的事实有关,但我不知道如何继续。

有时你需要问这个问题,才能回答你的问题。

将方法绑定到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 ();