Как убрать процессы запущенные уже удаленным скриптом внутри SPA в React?

Был бы очень признателен за любую помощь.
К вопросу:
Ситуация вынудила использовать сторонний JS код внутри React.
Добавляю этот код при ComponentDidMount с помощью добавления в DOM тега script c указанным src.
При ComponentWillUnmount я удаляю добавленный тег script, для того чтобы избежать клонирования и ненужной нагрузки на других разделах моего SPA.
При переходе в другой раздел приложения, тег, как и должно, удаляется. НО, процессы которые были запущены этим сторонним кодом остаются. И начинают грузить всё приложение. Вижу это в инструментах отладки.
Если совершить несколько переходов туда и обратно, то эти процессы размножатся до таких размеров, что подвисать начнет даже сам браузер.
Что я упускаю?....
Как убрать процессы запущенные уже удаленным скриптом внутри SPA в React?

UPD: Забыл упомянуть, что сторонний код обфусцирован. Работать внутри него не представляется возможным.
  • Вопрос задан
  • 243 просмотра
Решения вопроса 1
Kozack
@Kozack Куратор тега JavaScript
Thinking about a11y
Ну, по хорошему, сторонний код должен поддерживать какое-то апи: калбеки или сигналы или ещё что, чтобы остановить себя. Особенно, если там какие-то тяжелые операции. Если такого нет, можно попробовать сломать его, чтобы он выбросил исключение и остановился.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Alexandroppolus
@Alexandroppolus
кодир
Запоминать факт, что этот сторонний код был добавлен, и больше не добавлять. Можно просто не удалять тег.
В общем случае, этот код завернут в IIFE, и залезть внутрь него не получится. Если он не проверяет какие-то внешние флаги, не взаимодействует с внешними переменными и функциями, то никак. А если взаимодействует, то надо смотреть по ситуации, что там конкретно.
Ответ написан
Комментировать
profesor08
@profesor08 Куратор тега JavaScript
Если тот скрипт выполняет только какие-то вычисления, то попробуй сделать сервис воркер, в нем запускать тот скрипт. А через сообщения общаться с сервис воркером и получать от него данные уже в реакте.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы