Ideeaはあなたがコールバックの外fromId
を使用することができないということです、(このコードはchild-process
を産卵され、彼は他の実行スレッドで、メインコードの並列でそれを実行します。)非同期的に計算され 一般的な例彼らはノードに実行したときにPHP開発者の使用には、以下のいずれかです。
var globalVar;
execPhp('sample_php.php', function(error, php, outprint){
php.decode_key(fromUserId, function(err, fromId, output, printed){
globalVar = fromId;
});
});
はすべてasync
方法を起こし、動作しません、これはジャバスクリプトのasyncrhonousパラダイムである(彼らはコンテキストを共有しないparalellにrunnedされていますconcurency model))ので、この意味でできることは、php.decode_key
methのコールバックにコードを書くことですod。
きれいな方法は、クレタ島にモジュールkeydecoder.js
こととあなたの主なプロジェクトでasynchornouslyそれを使用することができます。
//keydecoder.js
var execPhp = requiere('exec-php');
module.exports = function(fromUserId, cb) {
execPhp('sample_php.php', function(error, php, outprint) {
if (error) {
cb(error);
} else {
php.decode_key(fromUserId, function(err, fromId, output, printed) {
cb(err, fromId);
});
}
});
};
を、あなたがこの方法でそれを使用することができます。
var keyDecoder = require('../modules/keydecoder');
keyDecoder(fromUserId, function(err, result) {
//use in main code
});
そして、何の問題があります、あなたは 'php-exec'モジュールを使用しているようですが、私はこのことはうまくいかないと思っています。何かエラーが出ますか? –
これは完璧に動作しますが、私はphp.decode_key(fromUserId、function(err、fromId、output、printed){ })の外部に出力が必要です。 –