2
votes

Comment définir le délai d'expiration pour l'appel de rendement dans React Redux-Saga

Dans mon backend API de repos, je fais un traitement intensif et généralement, cela prend 1,5 minute pour produire un résultat, pendant ce temps j'obtiens cette erreur dans mon application de réaction frontend.

Error: timeout of 60000ms exceeded

Ainsi, la connexion des pairs est perdue.

Comment définir le délai d'expiration des requêtes dans redux-saga


1 commentaires

Cela peut se produire pour un certain nombre de raisons et vous n'avez donné aucun détail sur la configuration de votre application. Avez-vous vérifié votre serveur Web / proxy pour les délais d'expiration? Existe-t-il des délais d'expiration pour les appels ajax frontend effectués par react?


3 Réponses :


0
votes
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)
      }
    }
  )
}
Hope this helps.

0 commentaires

0
votes
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,
      }),
    );
  }
}

1 commentaires

le timeout se produit pendant l'appel d'API depuis l'API rest de django



0
votes

J'ai été utilisé race pour de telles choses. Cela peut vous être utile.

  const {posts, timeout} = yield race({
    posts: call(fetchApi, '/posts'),
    timeout: delay(60 * 1000)
  });
  if (timeout) throw new Error('timeout of 60000ms exceeded') 


0 commentaires