2016-11-14 7 views
0

にMeteor.call結果を待ちしてMeteor.callメソッドの結果を待つ方法を理解していないのです。 これは私のコードコンソールで私はJavaScript.Iに新しいですクライアント

 //client/main.js 
    //Added the callback 
     Template.hello.events({ 
    'click button'(event, instance) { 
    // increment the counter when button is clicked 
    instance.counter.set(instance.counter.get() + 1); 
    var res = Meteor.call("callMeLater","sanj",function (err,res) { 
     if (err) { 
     console.log(err); 
     } else { 
     console.log("this is the result main ", res); 
     } 
    }); 
    console.log("this is the result ", res); 
    } 
     //server/main.js 
     Meteor.methods({ 
     callMeLater :function (name) { 
      var callMeLaterSync =Meteor.wrapAsync(callMeLaterAsync); 
      var result = callMeLaterSync(name); 
      console.log("this is the test", result); 
      return result; 
     } 
    }); 


    var callMeLaterAsync = function (name,cb) { 
     setTimeout(function() { 
      cb && cb (null ,"hey there, "+name); 
     },2000); 
    }; 

ですが、私はどのように私は、クライアントで実行をブロックすることによりMeteor.callの結果を待たない

this is the result undefined 

this is the result main hey there, sanj 

を取得します。 ただ、コールバックメソッドにコードを置く

おかげ

+0

クライアントでブロックしたくない(できない)ブロックです。 Meteor.callは、コールバック関数の中で行く必要が後に実行する必要が何か(つまり、あなたは(「これはメインの結果である」、RES) 'はconsole.logを行っている;' – Adam

+0

だから私は、セッションまたはReactive-を使用VAR?私はあなたが混同されるかもしれないと思う –

+0

?受信した結果は、これが最善の解決策であるreflected.Isされるようになっている。2「の解像度が」あなたのコード内の変数は完全に分離されています。あなたが唯一の流星で「RES」を扱うことができます。あなたは「これが主な結果である」( 'はconsole.logを行っているところコールバック関数(すなわちを呼び出し、RES);'あなたはそのセッションVARまたは反応VAR、または単に典型的には(あなたが好きしかし、RES保存することができますJS VAR。あなたはそれをどうしようとは何ですか? – Adam

答えて

0

を助けてください。

Meteor.call('callMeLater',"sanj", function(err, res){ 
    if (err) { 
     console.log(err); 
    } else { 
     console.log("this is the result ", res); 
    } 
    }); 
+0

私は自分の質問を編集しました –

関連する問題