3

現在、ネイティブ d3 チャートと c3.js チャート モジュールを使用したチャートの両方を使用する Web アプリを使用しています。

私のチャートは、データの変更により 1 ~ 2 秒ごとに更新されており、一度に 3 ~ 4 個のチャートが画面に表示されます。

Chrome でタブを変更するか、ウィンドウを最小化すると、タブに戻ると、d3.js が d3_timer_step で長い時間を費やし、UI が 5 秒以上完全にロックされることに気付きました (ユーザーの使用時間によって異なります)。タブから離れている場合)、ユーザーが 30 分ほど離れると、実質的に何分間も UI がロックされる可能性があります。

ウィンドウがぼやけている間にd3アニメーションがキューに入れられ、再びフォーカスされたときにUIスレッドを叩いているだけだと思います。

明らかに、ウィンドウが表示されていないときにグラフの更新を停止することができます (おそらくいずれにせよ停止します)。たとえば、d3 にアニメーション バッファなどを制限するオプションはありますか?

4

2 に答える 2

2

私の場合、0.4.11 は何も変更しません (そして、chart.destroy() でさえ驚くほど何もしません)。中心的な問題は、c3js が d3 トランジションをスケジュールし続けていることです。その側の D3 は、タブがフォーカスされるまですべての遷移を延期し、次に BAM - 単一のブロッキング要求ですべてを実行します。

この場合、チャートのグローバル遷移期間を0またはに変更できますnull。ほとんどの内部 c3 関数は、遷移を実行するかどうか (0 の場合) のフラグとして遷移期間に依存します。

于 2016-06-09T08:35:23.030 に答える
0

私は C3 メンテナーです。

私の推測では、C3 の非常に古いバージョン (0.4.9) を使用していると思われます。0.4.11 でこれが修正されました。バグがあったと思いますdata.load。バージョンを更新してみてください!

于 2016-05-01T16:12:30.247 に答える