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 ();