2016-09-12 7 views
1

私は、Webアプリケーションを持っています。その全機能は、サーバーからフェッチされた3つのJSONファイルに依存し、メインページのロード時に処理されます。現時点では、私はjQuery AJAX呼び出しを 'async:false'と使用していますが、正常に動作します。しかし、私が読んだことは、同期AJAXが邪悪であり、これを非同期動作にリファクタリングする必要があることを私に叫んでいます。もちろん、アプリケーション全体がAJAXの成功関数にロードされるという点で、コードを面倒にするというコストをかけることができます。ページ読み込み時にJSONファイルを取得するにはどうすればよいですか? (同期は不可避的に悪いですか)?

私の質問は、これが私には同期動作の正当化されたケースであると思われるので、実際にリファクタリングするべきかどうかです。はい、AJAX呼び出しに問題がある場合、アプリケーションは応答しませんが、重要なJSファイルの1つを読み込む際に問題があった場合にも応答しません。とにかくJSONファイルが読み込まれるまで、アプリケーションが効果的に使用できない(何かを行うことができない)ことを考えれば、それは重要ですか?

おそらく、AJAXの使用を全く含まないJSONファイルを読み込む簡単な方法がありませんでしたか?それは確かにきれいな解決策になります。

+0

自分自身に質問する必要がある1つの質問は、「JSONの読み込みに時間がかかりますか? – evolutionxbox

+0

「ファイルがサーバーからフェッチされ、メインページがロードされたときに処理されました」という理由から、単にjsonファイルをロードしてajaxが必要なのはなぜですか? – madalinivascu

答えて

1

ファイルがサーバーに配置されている場合は、おそらくあなたは、このアプローチを試すことができます。

は、ファイルに次のようにJSONを定義します。

data = '[ 
    {"name" : "Ashwin", "age" : "20"}, 
    {"name" : "Abhinandan", "age" : "20"} 
]'; 

その後、あなただけでJSONファイルを含めますあなたのHTML。

<script type="text/javascript" src="data.json"></script> 
<script type="text/javascript" src="javascrip.js"></script> 

は最後に、ちょうど変数としてデータを使用します。

var mydata = JSON.parse(data); 

免責事項: を私はちょうど私が反応して、私のコメントで述べたアプローチを採用している。この10分前here

+0

JSONファイルが実際にはJSONではない形式でなければならないという要件のために、私は前にそのリンクを見てきましたが、本当にそれを真剣に考慮していませんでした。しかし、私はJSONデータと変数への代入の両方を含んだ、必要なJSファイルを生成することができるので、これは私に理想的な解決策を与えてくれます。とにかくJSONはサーバーサイドで生成されていたので、私はそれを少し変更するだけです。 –

+0

誰もがこれが非常に間違ったアプローチだと思いますか?将来的に後悔することになる悪いプログラミングスタイルを意味するのですか?それは非常に有用だと思っていますが、このアプローチの方法が本当に心配です – neo

+0

どうやってプログラミングスタイルが悪いですか? –

1

動作しますか?まず第一に、壊れていないものを「修正」しないでください。

非同期モードを使用する必要があるかどうかは、このアプリケーションをローカルLAN上で実行しているのですか、それとも公衆インターネット経由で実行しますか?前者の場合、帯域幅の問題が発生する可能性は低いと想定するのはおそらく安全です。理想的なもの以外に非同期に切り替える理由はほとんどありません。

しかし、公共のインターネット上で実行されている場合は、あらゆる種類のネットワーク関連の問題が発生する可能性があり、セッションの過程で良好な状態を維持するサーバー/クライアント接続に頼ることはできません。その場合、ある種のローディング/アクティビティ画面を備えた非同期的なアプローチが必須であり、適切なロバストなエラー処理/リカバリと、アプリケーションのより簡単なバージョンへのダウンミーティングが、理想的な接続状態が利用できない場合すべての可能な

0

を見つけましたDefesa Esquerdoからの提案に。それはうまくいっていて、簡単な変更でした。私はここで私自身の疑問を踏んだ気がしますが、それは私の問題の良い解決策です - コードを単純化することで効率も向上します。

+0

は、アクティブ、最古、票に基づいてシフトポジションに答えます。その答えのコメント欄に記入してください。 – neo

関連する問題