2016-09-06 10 views
0

Meteorを初めて使用しました。私は次のコードを使用して、サーバーに格納されているファイルを読み込んでいます。ファイルを読むためのMeteor同期および非同期呼び出し

クライアント側

Meteor.call('parseFile', (err, res) => { 
    if (err) { 
    alert(err); 
    } else { 
    Session.set("result0",res[0]); 
    Session.set("result1",res[1]); 
    Session.set("result2",res[2]); 
    } 
}); 
let longitude = Session.get("result0"); 
let latitude = Session.get("result1"); 
var buildingData = Session.get("result2"); 

サーバー側

Meteor.methods({ 
    'parseFile'() { 
    var csv = Assets.getText('buildingData.csv'); 
    var rows = Papa.parse(csv).data; 
    return rows; 
    } 
}) 

私はそれがどこに私のバックので、結果を送信するために時間がかかる電話をかける中に問題があります定義とページ区切りを与える緯度と経度を使用しています。だから、この問題を避けるための解決策はありますか?ソリューションの1つは、同期呼び出しを行い、結果が返されるのを待つことです。

+1

"解決策の1つは同期呼び出しを行うことができます"、クライアントではなく、いいえ。クライアントで同期呼び出しを行うことはできません。ページを堅牢にする必要があります。セッション変数が設定されるまで待つ「読み込みページ」を実装することをお勧めします。 –

答えて

0

futures packageを使用してサーバーメソッドを同期して実行させることができます。これにより、クライアントはメソッドの完了を待つ必要があります。

それは次のようなものになります。

Meteor.methods({ 
    'parseFile'() { 
    var future = new Future(); 
    var csv = Assets.getText('buildingData.csv'); 
    var rows = Papa.parse(csv).data; 
    future.return(rows); 
    future.wait(); 
    } 
}); 

これは、あなたが上記のリンク先物パッケージをインストールし、あなたのごMeteor.methods()定義を含むファイルで適切に含まれてのセットアップが必要になります。また、メソッド内でエラー処理を調べることもできます。

UPDATE: FutureパッケージへのリンクはNPMパッケージで、hereについて読むことができます。上記のリンクは、古いラッパーパッケージのように見える大気パッケージです。

+0

「先物」パッケージは、npmまたは大気ですか? – Optymystyc

+0

NPMパッケージです。 NPMバージョンへのリンクを含む更新を追加しました。 – NFab

関連する問題