私のサイトが最初に初期化されると、サーバに照会してデータを取り戻す。このデータが戻ってくるまで、私はページ上に何も置くことができません。 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のWeb APIから外部JSONデータをロードするにはどうすればよいですか?
- 2. FirebaseのデータにアクセスしてD3.jsで視覚化するにはどうすればよいですか?
- 3. ウェブサービスから返されたjsonデータをD3.json(...)に渡すにはどうすればよいですか?
- 4. D3を使用してこのJSONデータにアクセスするにはどうすればよいですか?
- 5. d3.jsでイベントリスナーをカスタマイズするにはどうすればよいですか?
- 6. キャスパーJSスクリプトでJSONファイルをループしてロードするにはどうすればよいですか?
- 7. 端末からd3.jsおよびwebpackにローカルjsonデータをロード
- 8. JSONデータを同じキーと異なるデータで解析するにはどうすればよいですか?
- 9. 個々の要素としてd3.js選択をスタイルするにはどうすればよいですか?
- 10. THREE.jsとd3.jsを同期する
- 11. このJSスクリプトコードを延期または非同期化するにはどうすればよいですか?
- 12. Firebaseデータベースのデータを同期的にロードするにはどうすればいいですか?
- 13. editor2を使ってjsonデータと同じデータを取得するにはどうすればいいですか?
- 14. d3.jsノードをどのように翻訳すればよいですか?
- 15. AFNetworking3.0を使用してplistデータをWebサーバーに同期するにはどうすればよいですか?
- 16. d3を使用して.csvファイルをクロスフィルタにロードするにはどうすればよいですか?
- 17. d3.jsを使用してグラフを右側に移動するにはどうすればよいですか?
- 18. d3.jsアニメーションをベクトルフレームにエクスポートしてAfterEffectsシーケンスを作成するにはどうすればよいですか?
- 19. D3.jsを使用してマップ上にポイントをプロットするにはどうすればよいですか?
- 20. データをReduxに非同期でどのようにロードするのですか?
- 21. D3.jsのアークティッカーを作るにはどうすればいいですか
- 22. カウボーイとwebsocketで非同期にデータを送信するにはどうすればよいですか?
- 23. JSONベースのアーキテクチャ、フロントエンドとバックエンドを同期するにはどうすればよいですか?
- 24. DrawingVisualをAsyncとAwaitで非同期にロードするにはどうすればいいですか?
- 25. ノードjsのループでバルクメールを非同期に送信するにはどうすればよいですか?
- 26. レールビューのすべての画像を非同期にロードするにはどうすればいいですか?
- 27. js/reactjs - jsonから配列にデータを再構築するにはどうすればよいですか?
- 28. スレッド間の同期はどうすればよいですか?
- 29. スタアラリングが同期していることを確認するにはどうすればよいですか?
- 30. Wordpressでカスタムフィールドを同期するにはどうすればよいですか?
ユーザーはjQueryではなくd3について質問しています – EdgeCaseBerg
フィードバックに感謝します。 OPが要求するのは、同期要求を行う方法です.D3 APIを使用してこれを行うことはできません。なぜなら、これは、実行する方法ではないからです。私の答えは、jQueryを使用して、これを推奨するものではないという大きな免責条項を使ってこれを行う方法を提供します。 jQueryを使用していることをより明確にするために私の答えを編集しました。一般的なケースでは実行すべきではありません。 –