2013-10-27 10 views
5

これはしばらくの間、私を悩ませてきた機能:書き込みは/私は私がそれに迅速なQAを行うだけだろうと思ったので

1は、通常のnodeJSモジュールか何かを持っており、それが非同期機能を持っている場合サーバー側。どのように同期させるのですか?例:nodejs fs.statを非同期関数に同期させるにはどうすればよいでしょうか。

例えば私は、クライアントからそれを呼び出すと、結果がコールバックであるので、私は戻ってundefined私の結果として取得

Meteor.methods({ 
    getStat:function() { 
     fs.stat('/tmp/hello', function (err, result) { 
      if (err) throw err; 
      console.log(result) 
     }); 
    } 
}); 

サーバー側のJSを持っています。

答えて

7

Meteor.wrapAsyncと呼ばれる機能があります(文書化されていません)。

単純に今、あなたはあなたのMeteor.callresultにこの結果を得るでしょう

Meteor.methods({ 
    getStat:function() { 
     var getStat = Meteor._wrapAsync(fs.stat); 

     return getStat('/tmp/hello'); 
    } 
}); 

を機能を包みます。最初のパラメータがエラーで、2番目がエラーであるコールバックを持つ非同期関数を変換することができます。

+0

エラーを確認するにはどうすればよいですか? – zimt28

+0

@ zimt28コールバックで渡すのではなくエラーをスローしますが、 'try .. catch'を使ってチェックすることができます – Akshat

関連する問題