在redux传奇中使用setTimeOut内部的yield

问题描述 投票:0回答:1

在我的react项目中,我有以下代码。

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

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

我想在这里做的是在setTimeOut回调中使用yield。

yield put(removeAlert(payload.id));

但是我编写此方法的方式无效。因为箭头函数回调不是生成器函数,所以我不能在其中使用yield。如何在setTimeOut中使用yield?

javascript reactjs typescript react-native redux-saga
1个回答
2
投票

这是您需要的

export function* onDisplayAlert({ payload }: any) {
  payload.id = getUniqueID();
  yield put(setAlert(payload));
  yield delay(3000);
  yield put(removeAlert(payload.id));
}
© www.soinside.com 2019 - 2024. All rights reserved.