node.js中的child_process.fork用于同步调用

时间:2014-12-17 14:17:44

标签: node.js node-webkit child-process

某些Windows模块因node-webkit而被破坏,例如。 win32ole,所以我使用"代理"。在nw.exe的开头,脚本在带有node.exe的脚本上使用child_process.fork,并运行到nw.exe的末尾。

proxy = childprocess.fork('proxy.js', [], {execPath: __dirname+path.sep+'node.exe', silent: true});

一切都很好,但fork使用send(message)和on(' message')完全异步。 但是我需要一个带有返回值的同步调用,例如:

var response = proxy.sendsync(<json or string>); // returns string or json

或者在node-webkit和子处理节点之间是否存在IPC(无网络)的其他方式?

编辑:一个简单的例子(没有真正的代码,只有这个想法) win32ole在node-webkit

中不起作用
var archivename = oleproxy({type: 'get', name: 'ArchiveName'});
var config = loadconfig(archivename.result());
if (oleproxy({type: 'func', name: 'PrepareObj', paras: [config.maskid, config.rootobjid, 'caption']}).result() == 0) {
    oleproxy({type: 'set', name: 'ObjName', value: 'test'});
    ...
    oleproxy({type: 'set', name: 'ObjACL', value: '7a7'});
    var maskfieldcount = oleproxy({type: 'get', name: 'MaskFieldCount'}).result();
    for (var i=0; i<maskfieldcount; i++) {
    ...
    }
    ...
    oleproxy({type: 'func', name: 'SaveObj', paras: []});
}

函数<json> = oleproxy(<json>)是nw.exe端的包装函数。它将json发送到子进程(node.exe中的脚本)。子进程进行实际的OLE调用并获取调用结果。现在发回结果,但不是通过事件。主要过程仍在等待结果。

0 个答案:

没有答案