Dva: @ 云 谦 Comment interroger l'appel de rendement (api, param), l'utilisation de setInterval provoquera une erreur de syntaxe

Créé le 8 nov. 2016  ·  10Commentaires  ·  Source: dvajs/dva

Par exemple setInterval (function () {yield call (api, param)}, 1000)

question

Commentaire le plus utile

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

Tous les 10 commentaires

Comment puis-je interroger l'interface, si je n'utilise pas yield, je ne peux pas faire fonctionner l'état

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

Une écriture comme celle-ci signalera que undefind est dans les utils de redux-saga, alors comment dva devrait-elle introduire un délai?

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

Notre projet est actuellement refactorisé avec dva, et maintenant nous rencontrons ce problème, frère, merci frère Qian

Je viens de l'essayer, ça marche, merci @sorrycc ! ! !

Une opération sur la page @sorrycc souhaite mettre fin à cette interrogation. Que dois-je faire?

salut,
Existe-t-il des didacticiels détaillés sur le traitement des effets de la saga? J'ai rencontré le même problème, comme la fin de l'interrogation, la réexécution, etc. La méthode simple peut être détectée avec flag, et il y a aussi cancel, fork, takeLatest Je me demande si vous pouvez donner quelques exemples à apprendre?
Merci.

@sorrycc Je voudrais demander à nouveau, si tel est le cas, que se passe-t-il si la boucle peut être arrêtée lorsque certains événements sont déclenchés?

Vous devez utiliser le fork de redux-saga pour générer une tâche et annuler la tâche si nécessaire.

    * 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);
    },
Cette page vous a été utile?
0 / 5 - 0 notes