Когда выполняется обещание cacheEntryRemoved?

В документах говорится следующее:

- Обещание, которое позволяет вам дождаться момента времени, когда запись кеша будет удалена из кеша, за счет того, что приложение больше не будет использовать / подписаться на него слишком долго, или путем отправки api.utils.resetApiState.

Я визуально просмотрел документы и пока не понимаю эту часть так хорошо, как хотелось бы.

Означает ли приведенная выше цитата, что обещание выполнено, когда компонент, использующий запрос, отключается?

Как насчет того, когда компонент получает потоковые обновления?

Хорошей практикой является частичная отмена подписки на существующее соединение WebSockets сразу после cacheEntryRemovedобещание выполняется в onCacheEntryAdded, когда часть сообщений, получаемых с сервера WS, больше не нужна? Или лучше отказаться от подписки в функции очистки хуков useEffect от этого канала из соединения WS?

У меня есть одно соединение Socket.IO, которое используется для параллельного приема большего количества каналов сообщений, одному компоненту нужен канал, другому компоненту нужен другой, некоторым другим компонентам нужен тот же канал, что и существующий установленный компонент. Можно ли отказаться от подписки на канал после выполнения этого обещания? Я добавил больше информации об этом в другом вопросе.

1 ответ

Это довольно буквально: когда запись кеша удаляется из кеша.

Для каждой комбинации конечная точка-аргумент у вас есть одна запись в кэше.

Итак, когда первый компонент выполняет a, добавляется запись в кэш для этого (и функция запускается для "chatroom" запись с аргументом "flower"). Если другой компонент также использует useChatRoomQuery("flower"), используется та же запись в кэше (без вызова).
И если компонент вызывает useChatRoomQuery("afterhour"), что создаст новую запись в кеше (и запустит другую onCacheEntryAdded).

Как только последний компонент, использующий запись кэша, прекращает ее использование (путем размонтирования или изменения на другой аргумент), запускается таймер (обычно 60 секунд - вы можете настроить это на уровне api и конечной точки через keepUnusedDataFor).
По истечении этого времени запись в кеше удаляется, и обещание выполняется.

Итак, в целом, вероятно, неплохо также отказаться от подписки на ваше соединение с сокетом - и когда это была последняя тема, которую вы слушали, также отключиться от нее. В конце концов, какое-то время никого не интересовали эти данные, и вы всегда можете повторно подключиться и добавить нового слушателя позже.

Другие вопросы по тегам