Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

187
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda