私のサイトが最初に初期化されると、サーバに照会してデータを取り戻す。このデータが戻ってくるまで、私はページ上に何も置くことができません。 d3.jsでは、データを取得するのにd3.json()を使用できますが、非同期であるため、ページロジック全体をコールバック関数に入れる必要があります。どのようにデータを要求し、それが戻ってくるのを待つのですか?d3.jsと同期してJSONデータをロードするにはどうすればよいですか?
9
A
答えて
4
あなたは基本的に唯一の方法です。コールバック関数は、コードの残りの部分を開始する関数でなければなりません。あなたはコールバック関数ですべてのコードを必要としませんが、間接を導入することはできます。そのため、コールバック関数は、現在コールバック関数内にある別の関数を呼び出します。
4
JavaScriptで同期リクエストを使用することは、スレッド全体をブロックし、その間に何も処理されないため、お勧めできません。また、ユーザーはWebページとうまく対話できません。それは本当にあなたが望むものである場合
は、次の(使用してjQueryの)を行うことができます。
var jsonData;
jQuery.ajax({
dataType: "json",
url: "jsondatafile.json",
async: false
success: function(data){jsonData = data}
});
を、それが推奨されていませんが、でもjQueryのことで、ここにjQuery.ajax() documentation説明したように:
Ajaxの最初の文字は「非同期」の略で、操作は並行して行われ、完了の順序は保証されません。 $ .ajax()のasyncオプションは、デフォルトでtrueに設定され、要求が行われた後にコードの実行を続行できることを示します。このオプションをfalseに設定すると、ブラウザが応答しなくなる可能性があるため、非同期ではなくコールを非同期にしないことを強くお勧めします。
最後に、success
属性にある機能を非同期で使用することを妨げるものはありません。非同期リクエストを使用するように設計を変更する時代の大半は、その価値があります。経験上、同期要求を使用するページをデバッグするのは苦痛です(特に要求が応答されない場合)。
関連する問題
- 1. d3.jsノードをどのように翻訳すればよいですか?
- 2. d3.jsアニメーションをベクトルフレームにエクスポートしてAfterEffectsシーケンスを作成するにはどうすればよいですか?
- 3. JSONベースのアーキテクチャ、フロントエンドとバックエンドを同期するにはどうすればよいですか?
- 4. カウボーイとwebsocketで非同期にデータを送信するにはどうすればよいですか?
- 5. バックボーンJS:削除の同期を無効にするにはどうすればよいですか?
- 6. レールビューのすべての画像を非同期にロードするにはどうすればいいですか?
- 7. スタアラリングが同期していることを確認するにはどうすればよいですか?
- 8. 重複する図形からd3.jsマウスイベントを操作するにはどうすればよいですか?
- 9. スレッド間の同期はどうすればよいですか?
- 10. Wordpressでカスタムフィールドを同期するにはどうすればよいですか?
- 11. SyncAdapterをデフォルトで同期しないように定義するにはどうすればよいですか?
- 12. ajaxを使用してファイルからJSONオブジェクトをロードするにはどうすればよいですか?
- 13. crypto.pbkdf2は非同期ですが、どうすれば同期として扱うことができますか?
- 14. Androidレイアウトビューを同期するにはどうすればよいですか?
- 15. 非同期コールバックをテストするにはどうすればよいですか?
- 16. アンダースコア.jsを使用してJSONオブジェクトを出力するにはどうすればよいですか?
- 17. mobilinkクライアントとサーバーをセットアップして同期をテストするにはどうすればよいですか?
- 18. 異種データ(np.genfromtxt)を2D配列としてロードするにはどうすればよいですか?
- 19. Ruby on Railsドキュメントでd3.jsを使用するにはどうすればよいですか?
- 20. d3.jsに矢印リンクを追加するにはどうすればよいですか?
- 21. d3.jsベースの「ファミリーツリー」に結婚式を表示するにはどうすればよいですか?
- 22. マルチテーブルからjsonデータを返すにはどうすればよいですか?
- 23. 入力としてjsonデータを使用するにはどうすればよいですか?
- 24. D3でxlink:hrefエラーをキャッチするにはどうすればよいですか?
- 25. libwebsocket経由で非同期データを送信するにはどうすればよいですか?
- 26. jQueryでwindow.locationを使用して同じページを再ロードするにはどうすればよいですか?
- 27. PHPからJSONデータを抽出してデータテーブルに表示するにはどうすればよいですか?
- 28. 同じJSファイルでJSファイルのURLを取得するにはどうすればよいですか?
- 29. Windows Mobile 6デバイスをドッキングしてローカルデータベースと同期させるにはどうすればよいですか?
- 30. sammy jsのルートに従ってhtmlファイルをロードするにはどうすればよいですか?
ユーザーはjQueryではなくd3について質問しています – EdgeCaseBerg
フィードバックに感謝します。 OPが要求するのは、同期要求を行う方法です.D3 APIを使用してこれを行うことはできません。なぜなら、これは、実行する方法ではないからです。私の答えは、jQueryを使用して、これを推奨するものではないという大きな免責条項を使ってこれを行う方法を提供します。 jQueryを使用していることをより明確にするために私の答えを編集しました。一般的なケースでは実行すべきではありません。 –