Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

182
Vistas
¿Cómo esperar hasta que todas las fórmulas de ViewModel terminen de cambiar en ExtJS?

Estoy trabajando con el marco Ext JS. Tenemos un ViewModel bastante complejo con muchas fórmulas vinculadas a otras fórmulas. Me gustaría poder ejecutar algún código solo una vez que ViewModel haya terminado su larga cascada de eventos que desencadenan eventos. Estoy tratando de verificar que, después de que se hayan calculado todas las fórmulas de ViewModel, si el modelo de datos permanece o no idéntico a los valores esperados para los campos calculados devueltos por nuestra API, básicamente una verificación diferida de model.isDirty() .

Intenté usar setTimeout para agregar mi evento al final de la cola de eventos, pero a veces termina activándose en medio de la cascada de actualización de fórmulas. Simplemente podría establecer un tiempo de espera más largo, pero eso se siente torpe, obligaría al usuario a esperar más y no se puede garantizar que funcione en un navegador particularmente lento.

¿Hay una buena manera de ejecutar el código tan pronto como ViewModel termine de calcular, y no un momento antes?

¿Hay alguna manera de verificar si ViewModel está listo o no?

¿Hay alguna manera de diferir un evento de manera similar a setTimeout, pero que se ejecute solo después de que la cola de eventos esté completamente vacía?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

He resuelto mi propio problema.

En la versión 7.3.1 de Ext JS, puede inspeccionar el miembro ScheduledCount del scheduledCount de ViewModel para averiguar si hay fórmulas de ViewModel esperando para ejecutarse. Si el valor es cero, puede estar seguro de que ViewModel ha terminado de calcular.

 const scheduler = this.getViewModel().getScheduler(); setTimeout(awaitViewModelFinished, 0); function awaitViewModelFinished() { if (scheduler.scheduledCount > 0) { setTimeout(awaitViewModelFinished, 0); return; } // Payload code goes here. }

No pude encontrar una característica compatible del marco para hacer esto. Según los documentos de sencha , "[Scheduler] es una clase de utilidad privada para uso interno del marco. No confíe en su existencia". Si está utilizando otra versión de Ext JS, es posible que deba encontrar una solución similar pero diferente para esto.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Dentro del controlador puedes usar:

 // come viewModel options might not be resolved this.getViewModel().notify(); // all viewModel options are solved

!!Cuidado: si un enlace es nulo, la fórmula enlazada no se ejecutará.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda