我已經建立了一個簡單的模型在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)更通用 –