2017-07-27 2 views
0

Je sais que ce n'est pas la meilleure pratique, mais c'est la solution la plus performante que j'ai trouvé jusqu'à présent. Il surveille un objet et transforme cet objet dans l'exécution automatique.Mobx Autorun en cours d'exécution trop souvent/besoin de sauter dans certains cas/exécuter seulement après avoir terminé

Cette configuration fonctionne très bien pour les petits ensembles de données, mais lorsqu'il y a beaucoup de changements, elle reste bloquée dans l'erreur "100 cycles et n'a pas réglé". Je me demandais s'il y avait un moyen de l'itérer juste une fois/rassembler tous les changements et les appliquer en un seul coup. J'ai essayé un certain nombre de solutions/solutions de contournement qui impliquent des temporisations, la comparaison d'objets profonds (c'est-à-dire ne pas fonctionner si elle n'a pas changé) etc., mais elles désactivent l'exécution automatique ou entraînent de très mauvaises performances.

je suppose en résumé:

  • Y at-il un moyen de faire exécuter autorun ne change sur le même cadre?
  • Existe-t-il une meilleure solution pour l'exécution automatique pour observer chaque observable dans un objet?
  • Existe-t-il un moyen de limiter l'exécution automatique?
  • Existe-t-il une meilleure solution?

Répondre

1

Il est difficile de dire quelque chose d'utile sans un exemple de code minimal de ce que vous faites. Mais il semble que vous lisez et modifiez les mêmes données dans l'autorun, qui introduit des cycles. Pensez à utiliser reaction qui vous permet de mieux séparer les données que vous voulez écouter réagir, par rapport à l'action que vous voulez prendre une fois qu'un changement se produit

+0

Ahh .. Aide du créateur! - Ça ressemble exactement à ce que je cherchais, je vais essayer et faire un rapport. Je ne sais pas comment j'ai manqué dans les docs –

+0

Après la mise en œuvre, il résout définitivement mon problème, merci! –