mihailkuzmin
@mihailkuzmin
Learning js

Как сделать циклический вызов эффекта в Effector.js?

Здравствуйте, использую Effector.
Нужно сделать вызов эффекта раз в n секунд.
События mount/umnount - маунт/анмаунт компонента.
Всё работает в "первом" жизненном цикле компонента, т.е. если компонент монтируется ещё раз, то вызов эффекта (fetch) происходит 1 раз.
import { createEffect, forward } from 'effector';
import { mount, unmount } from './events';
import { ApiService } from '../../services';

const apiService = new ApiService();

const fetch = createEffect('fetch stats');
fetch.use(apiService.getStats);

const timeout = createEffect('fetch timeout');
timeout.use(() => new Promise((res) => {
  setTimeout(() => res(), 3000);
}));

forward({ from: mount, to: fetch });

forward({ from: fetch.done, to: timeout });

const stop = forward({ from: timeout.done, to: fetch });

unmount.watch(stop);

export { fetch };
  • Вопрос задан
  • 295 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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