0

doGetリクエストを介してサーブレットからjsonを渡すことにより、d3を使用してJavaコードの出力を動的に視覚化したいと思います...

これを行うことで、d3でHTTPリクエストを実行できることを知っています...

d3.json("data.js", function(data) { alert(data.length) });

ただし、ビジュアライゼーションを毎秒更新したいと思います。コールバック関数を呼び出すと、別のリクエストを実行して新しいjsonオブジェクトを受信しますか、それとも最初に受信したjsonを使用するだけですか?

私はjsタイマーを使用して毎秒新しいjsonを要求することを計画していました...コールバック関数を使用して更新されたjsonを受信できるかどうかを確認したいと思いました。ありがとう!

4

1 に答える 1

0

呼び出しd3.json(<url>, <callback>)は非同期要求を実行します。したがって、これを1秒に1回呼び出す必要があります。

setInterval(function() {
  d3.json(<url>, <callback>);
}, 1000);

ただし、サーバーの応答が遅い場合は、リクエストのバックログが蓄積する可能性があります。代わりに、受信するたびにさらに多くのデータを要求できます。

fetch();
function fetch() {
  d3.json("more.json", function(json) {
    // Update visualisation here…
    setTimeout(fetch, 1000); // fetch more data after 1000ms
  });
}

一方、エラー応答がある場合、これはデータの要求を停止します(D3.jsは現在、エラーが発生したかどうかを通知しないため)。エラーを処理したい場合は、XMLHttpRequestを直接使用できます。

于 2012-07-18T09:59:49.113 に答える