如何在React Redux-Saga中为yield调用设置超时

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

在我的其余API后端,我做重处理,通常,生成一个结果需要1.5分钟,在那段时间我在我的前端反应应用程序中收到此错误。

Error: timeout of 60000ms exceeded

因此,对等连接丢失了。

如何在redux-saga中设置请求超时

reactjs react-redux redux-saga
2个回答
0
投票
import { eventChannel, END } from 'redux-saga'

function countdown(secs) {
  return eventChannel(emitter => {
      const iv = setInterval(() => {
        secs -= 1
        if (secs > 0) {
          emitter(secs)
        } else {
          // this causes the channel to close
          emitter(END)
        }
      }, 1000);
      // The subscriber must return an unsubscribe function
      return () => {
        clearInterval(iv)
      }
    }
  )
}

希望这可以帮助。


0
投票
export function* create(action) {
  try {
    const { payload } = action;
    const response = yield call(api.addPost, payload);
    if (response.status === 200) {
      console.log('pass 200 check');
      yield put(appActions.setResourceResponse(response.data));
      console.log(response.data);
      payload.push('/add-news');
    }
  } catch (error) {
    console.log(error);
    yield put(
      a.setResponse({
        message: error.response.data,
        status: error.response.status,
      }),
    );
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.