2016-03-29 21 views
0

流星の非同期トピックですが、それは残念です!私はwrapasync、約束、将来、繊維などについて多くのことを読む...私は少し失われている!流星の流星での流星の非同期

私の問題は、私はちょうどから現在のホスト名を返しているサーバーの戻りたい私のコードでは、単純です:

"getHost" : function(){ 
     return this.connection.httpHeaders.host; 
} 

を私はonCreatedヘルパーの私のプログラムのbegginingでこれを呼んでいます:

Template.printjoblistList.onCreated(function() { 
    Meteor.call("getHost", function(err, data){ 
     if(err){ 
      console.log("error " + err + " : " + data); 
     }else { 
      Session.set("printJobList_Host", data) 
     } 
    }); 
}); 

問題は、私のSession.setがSession.getの後に実行されることです。このSession.getはこれで実行されます。

私のテンプレートで

:私のヘルパーで

<a href="{{getPdf}}">{{getPdf}}</a> 

Template.registerHelper("getPdf", function() { 
    var myReturn = Session.get('printJobList_Host'); + "/pdf/" + pdfFileName; 
    return myReturn; 
}); 

だから、私はこれを明確に取得するためにwrapAsyncを使用する方法を理解したいと思います! ご協力いただきありがとうございます!

+0

の中でSession.getを使用してみてください。クライアントではできません。 'wrapAsync'は、Fibersのおかげで非同期コードが同期的に見えるようにすることで、Node環境(サーバ)でのみ動作します。クライアントでは、古典的な非同期性に悩まされています。 –

答えて

1

Session.getSession.set前に起こるかもしれないが、それは問題ないはずです、Session.setが呼び出されたときので、Session.getは(少なくとも、それが正規のヘルパーの場合である。)あまりにも再び呼び出されます

の場合あなたのためにはうまくいかない場合は、Tracker.autorun()

+0

ありがとう!できます ! ;) – Manov