котором происходит fetch, нужно сделать его long polling
в компоненте в useEffect() вызываю его с аргументом true, в return также вызываю и передаю аргумент false
в зависимости от переданного аргумента должно либо вызываться, либо останавливаться. сейчас при срабатывании return в useEffect() ставится в очередь следующий
вообщем, как правильно делать long polling? в гугле искал, но конкретно моего случая или похожего не нашел
В clearTimeout нужно передавать id который возвращает setTimeout И я бы логику лонгпулинга бы писал не в thunk а в классе api, а в thunk только подписки
сделал так: let timeout = (tickStatus) => setTimeOut(async function tick() { .... timeout(status); // status приходит выше из компонента clearTimeout(tick); }); timeout(status); работает так же, переходим на другую страницу - пуллинг остается, возвращаемся - добавляется в очередь новая рекурсия
мне бы хотя бы в санках сделать, потом перенесу/допилю как нужно)
Тут тоже неправильно clear делаешь
Без санок решение будет проще и толковее
вынести пуллинг в отдельный хук, а thunk action оставить чистым? thunk action`ов несколько, в них разные url для фетча и т.д.
Тебе говорят «вынеси логику пуллинга, ни к чему ей быть связанной с санкой». Ты спрашиваешь «то есть надо покрепче связать? хуками?» 🤔
Вынеси в отдельную сущность
Погугли про паттерн event emitter (или observable), вот такой должна твоя сущность выглядеть снаружи
спасибо, сейчас посмотрю
Обсуждают сегодня