Dva: @ 云 谦 Как опросить вызов yield (api, param), используя setInterval, появится синтаксическая ошибка

Созданный на 8 нояб. 2016  ·  10Комментарии  ·  Источник: dvajs/dva

Например, setInterval (function () {yield call (api, param)}, 1000)

question

Самый полезный комментарий

const delay = timeout => {
  return new Promise(resolve => {
    setTimeout(resolve, timeout);
  });
};

Все 10 Комментарий

Как я могу опросить интерфейс, если я не использую yield, я не могу управлять состоянием

while (true) {
  yield call(delay, 1000);
  yield call(api, params);
}

Запись такой задержки сообщит, что undefind находится в утилитах redux-saga, тогда как dva должно вводить задержку?

const delay = timeout => {
  return new Promise(resolve => {
    setTimeout(resolve, timeout);
  });
};

Наш проект в настоящее время реорганизован с помощью dva, и теперь мы сталкиваемся с этой проблемой, брат, спасибо, брат Цянь

Просто попробовал, работает, спасибо @sorrycc ! ! !

На странице @sorrycc есть операция, которая хочет прервать опрос. Что мне делать?

Привет,
Есть ли какие-нибудь подробные руководства по обработке эффектов саги? Я столкнулся с той же проблемой, такой как завершение опроса, повторный запуск и т. Д. Простой метод можно определить с помощью флага, а также есть cancel, fork, takeLatest. Интересно, можно ли привести несколько примеров для изучения?
Спасибо.

@sorrycc Я хотел бы еще раз спросить, если это так, что, если цикл может быть остановлен при срабатывании определенных событий?

Вам нужно использовать вилку redux-saga для создания задачи и отменить задачу, когда это необходимо.

    * forkInterval(actions, { fork, cancelled, put }) {
      globalInterval = yield fork(function* () {
        try {
          while (true) {
            yield delay(3000);
            yield put({ type: 'youraction'  });
          }
        } finally {
          if (yield cancelled()) {
            // 取消之后的操作,这里什么都不做
          }
        }
      });
    },

    * clearInterval(actions, { cancel }) {
      yield cancel(globalInterval);
    },
Была ли эта страница полезной?
0 / 5 - 0 рейтинги