我想在节点中创建一个子进程,并在光纤中阻塞,直到进程终止.他们我理解它的方式,看起来应该是这样的:
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 ();
Run Code Online (Sandbox Code Playgroud)
节点的响应是:
TypeError: Object #<Object> has no method 'emit'
Run Code Online (Sandbox Code Playgroud)
我认为这与我正在包装实例方法而不是函数这一事实有关,但我不确定如何继续.
有时候你需要问问题才能找到答案.
将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 ();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1855 次 |
| 最近记录: |