меня есть самописная вьюшка, которая делает несколько (от 1 до десятков тысяч) запросов к api для построения графа (запрашивается информация по нодам).
Я столкнулся с тем, что функция, отвечающая за запросы и построение графа, не завершает свою работу после того, как пользователь перешел на другую вьюшку (и, соответственно, вьюшка отображения графа закрылась). Как сделать так, чтобы все js-методы прекращали свою работу после выхода из вьюшки?
Есть beforeUnmount, но как-то не хочется вставлять во все циклы проверку "а перешел ли пользователь на другую страницу?" вместо "автоматически завершить все работающие методы, если пользователь уже не видит эту вьюху"
AbortController
Не обращай внимание. Там на своей волне
Сорри, снова подниму вопрос: никто не знает автоматического метода прервать работу всего js при переходе с одной вьюшки на другую (и, соответственно, вьюшка unmount-нулась) через роутер? Как-то странно - редачить все вьюшки с axios-запросами Я знаю про AbortController и про то, что можно повесить свой флаг в data, чтобы он стал например false в beforeRouteLeave или beforeUnmount, но это выглядит колхозно)
Нет, такого метода нет. Вам нужен не "весь JS", а лишь маленькая часть с вашими запросами. Создают ли проблему отправленные запросы со страницы, с которой вы уходите? Но, если не делать SPA, то буквально весь JS останавливается при переходе - загружается новый документ =D
Проект "испещрен" запросами, придется добавлять проверку перед каждым из множества запросов, поэтому надеялся на радикальный вариант разрешения ситуации) Спасибо за ответ)
а что за запросы которые надо именно на фронте оборвать?
В моем случае - вечный цикл запроса статуса с периодичностью в 30 секунд. Перешел на другую часть сайта - а обновления всё равно запрашиваются закрытой вьюшкой)
так ты неправильно сделал, надо исправлять
так активную вьюшку по роутеру например можно же найти?
Не, всё правильно, там дашборд, который подтягивает информацию с нескольких бэков. Траббла в том, что оно не останавливается при переходе на другую подстраницу в рамках роутера. Я понимаю, что могу в цикл вставить проверку, активна ли сейчас вьюшка, но хотелось более простой жизни)
А как этой информацией я могу в итоге воспользоваться в данном сценарии?
если есть активная вкладка то запрос идет, если нет то цикл пусть и работает, но без запроса на сервер это то что в голову приходит но тут явно реализовать можно по другому, без цикла может через таймер, который завязать возможно на активность пользователя..., но это так мысли в слух
Можно сделать компосабл для запросов, который в unmounted будет их убирать. Но действительно ли у вас запросы так часто
Если что-то запускается с периодичностью - это интервал. Все запущенные интервалы в компоненте надо чистить в unmounted
Обсуждают сегодня