Используйте yield внутри setTimeOut в саге с редуктом - PullRequest
0 голосов
/ 17 января 2020

В моем реактивном проекте у меня есть следующий код.

export function* onDisplayAlert({ payload }: any) {
  payload.id = getUniqueID();
  yield put(setAlert(payload));

  yield setTimeout(() => {
    yield put(removeAlert(payload.id));
  }, 3000);
}

Что я хочу сделать здесь, это использовать yield внутри обратного вызова setTimeOut.

yield put(removeAlert(payload.id));

Но способ, который я написал, не работает. Потому что обратный вызов функции стрелки не является функцией генератора, поэтому я не могу использовать yield внутри нее. Как я могу использовать yield внутри setTimeOut?

1 Ответ

2 голосов
/ 17 января 2020

это то, что вам нужно

export function* onDisplayAlert({ payload }: any) {
  payload.id = getUniqueID();
  yield put(setAlert(payload));
  yield delay(3000);
  yield put(removeAlert(payload.id));
}
...