Dva: SetTimeout peut-il être utilisé dans les effets de modèle ?

Créé le 2 août 2017  ·  3Commentaires  ·  Source: dvajs/dva

le code montre comme ci-dessous

*aaa({
          payload
      },{call,put}){
        yield put({
            type: 'xxx',
            payload: {...payload}
        });
        setTimeout(
            yield put({
                type: 'xxxx',
            })
        ,1000)
      },

Après avoir ajouté setTimeout, il signale toujours Uncaught SyntaxError : identifiant inattendu. Tout ira bien après l'avoir supprimé. Je ne sais pas pourquoi. N'est-il pas possible d'utiliser setTimeout ici ?

question

Commentaire le plus utile

Essayer:

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

*aaa() {
  yield call(delay, 1000);
  yield put...
}

Tous les 3 commentaires

Essayer:

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

*aaa() {
  yield call(delay, 1000);
  yield put...
}

@désolé, j'ai trouvé que l'utilisation de yeild mis dans setTimeout ne fonctionnera pas. L'erreur de syntaxe non capturée : l'identifiant inattendu que j'ai commencé à signaler est causé par la valeur de retour après l'exécution de yeild put. Si je veux lancer une action, cette action change d'abord l'état Valeur, que dois-je faire si une certaine valeur d'état est modifiée après quelques secondes ? J'ai besoin de changer une certaine valeur d'état pour contrôler la visibilité d'un élément. Parce qu'il y a tellement d'endroits à utiliser, je dois écrire toutes les actions dans une action. Ma propre compréhension de cette action doit être écrite dans les effets, parce que c'est ici. Seuls les appels et les mises peuvent être utilisés à l'intérieur, et je peux mettre deux réducteurs et changer l'état deux fois, mais l'utilisation de yeild ne semble pas être contrôlée par setTimeout. Comment puis-je chronométrer une action pour qu'elle soit déclenchée à un moment spécifié time (à l'origine, setTimeout peut être écrit en dehors de dispatch Pour y parvenir, mais si le projet doit être modifié de cette manière, des centaines d'endroits devront peut-être être modifiés, et il ne sera pas possible de changer)

Vous pouvez prendre le temps de comprendre la différence entre générateur et fonction ordinaire.La fonction générique ne peut pas être définie dans le générateur.

Cette page vous a été utile?
0 / 5 - 0 notes