我已经建立了一个简单的模型在C++中,我希望流星与之交互。 目前模型是作为命令行运行的,一切工作都很好,但调用命令行是异步完成的。该模型速度非常快,因此我不需要结果进行回调,而且在此过程中使用回调会使流星的数据库访问更加复杂,这是我想避免的。流星执行系统命令同步
所以,我们刚进来的常规问题:如何使一些异步JavaScript中同步...
我知道,这已经讨论了使用节点,这个话题已经在这里回答: node.js execute system command synchronously
这就是说,如何在流星中实际做/设置它?
我们应该使用npm来安装软件包,但是随着Meteor改变了它的分发系统,那么它是如何让它自己处理npm软件包的呢?看看here,看看我说的,我一直没能找到任何相关信息,关于这个package.js
为了避免安装外部包,我想过用Fibers,其内部使用由流星,但仍然:是否有人有如何封装一个异步调用的例子?最后但并非最不重要的一点,Fibers开发人员几乎建议我们不要直接使用Fiber代码,而是使用其他一些子工具...为什么不能,但我回到了如何包含npm包的问题
我的代码看起来是这样的(有点简化):
function callToEngine(argument, callback)
{
var result = null;
var modelPath = "/some/where"
var require = Npm.require;
var spawn = require('child_process').spawn;
var model = spawn(modelPath, []);
var answerBuffer = "";
engine.stdin.write(argument);
engine.stdin.end(); //flush
engine.stdout.on('data', function(data)
{
answerBuffer+=data;
});
engine.stderr.on('data', function(data)
{
console.log('stderr: ' + data);
});
engine.on('close', function(code)
{
result = JSON.parse(answerBuffer);
console.log('child process exited with code ' + code);
callback(result);
});
}
我想有这样的:
var result = callToEngine(argument);
可能重复[meteorJS从服务器调用shell命令](http://stackoverflow.com/questions/13782754/meteorjs-call-a-shell-command-from-the-server) –
@DanDascalescu此问题特定于同步系统调用这意味着流星等待系统的答案。 [其他问题](http://stackoverflow.com/questions/13782754/meteorjs-call-a-shell-command-from-the-server)更通用 –