Проблема: запустив несколько потоков длинных опросов, которые должны сохраняться в течение жизненного цикла приложения (независимо от жизненного цикла отдельных компонентов), я ищу способ отписаться в ответ на различные события (например, изменение маршрута, ноне ограничивается).С этой целью я написал следующий код:
export const actions: ActionTree<TasksState, RootState> = {
async pollEventTasks({ dispatch, commit, state, rootState }, payload: any) {
const pollEventTasks$ = timer(0, 5000).pipe(
switchMap(_ => tasksService.loadTasksForEvent(payload.eventId)),
map((response: any) => {
commit('setTasks', response);
})
).subscribe();
// this won't work in strict mode. Hot observables ~can't~ shouldn't be written to store:
// commit('longPolling/eventTasksPollingStarted', pollEventTasks$, {root: true});
},
Горячая наблюдаемая «обновляет себя», таким образом изменяя хранилище вне обработчика мутаций.Каким было бы аккуратное решение, подходящее для лучших практик vue / vuex?