В настоящее время у меня есть веб-приложение, которое использует как собственные диаграммы d3, так и диаграммы, используя модуль диаграммы c3.js.Как остановить D3.js от блокировки при возврате на страницу
Мои диаграммы обновляются каждые 1-2 секунды из-за изменения данных, и на экране могут быть 3-4 диаграммы в любой момент времени.
Я заметил, что если я изменяю вкладки в хроме или сворачиваю окно, когда я вернусь на вкладку, d3.js тратит время LONG в d3_timer_step, полностью блокируя пользовательский интерфейс на 5+ секунд (в зависимости от того, как если пользователь находится далеко от вкладки), это может существенно заблокировать пользовательский интерфейс в течение многих минут, если пользователь не работает в течение 30 минут или около того.
Я предполагаю, что происходит ожидание анимации d3, когда окно размыто, а затем просто забивает поток пользовательского интерфейса, когда он снова фокусируется.
Очевидно, что я могу (и, вероятно, так или иначе) перестать обновлять свои диаграммы, когда окно не видно, однако мой вопрос в том, кто-нибудь еще нашел эту проблему и каково ее решение? например есть ли опция d3 для ограничения буфера анимации или аналогичного?
Я бы опубликовал это на странице проблем проекта d3js Github (https://github.com/mbostock/d3/issues). Насколько я понял, анимации не должны ставиться в очередь, так как requestAnimationFrame должен быть неактивным или резко уменьшенным. – Bill
@Bill, Спасибо, примечание о requestAnimationFrame отправило меня по правильному пути. Похоже, что, поскольку он приостановлен, переходы ожидают очереди, поэтому при возврате фокуса происходит огромное отставание переходов, из-за чего d3_timer_step занимает много времени, проходя через отставание. По-видимому, возможным решением является использование selection.interrupt для уменьшения количества переходов. Я также поднял вопрос, чтобы увидеть, есть ли что-то, что d3 может сделать внутренне, чтобы улучшить опыт. См. Https://github.com/mbostock/d3/issues/2211 –
Возможно, проблема с 'c3'. Не могли бы вы поставить скрипку, которая воспроизводит вашу проблему? –