Digamos que tiene una propiedad calculada que filtra y ordena una matriz de valores según la entrada de un usuario.
Si el usuario comienza a filtrar valores de la matriz y el valor de clasificación cambia durante el cálculo del filtrado, ¿la propiedad calculada continuará con la ejecución del filtrado o la propiedad calculada saltará al siguiente cálculo de la propiedad calculada en la cola? , con el nuevo valor de clasificación?
Javascript es (esencialmente) de un solo subproceso. Eso significa que nada puede procesar el hecho de que ocurrió un evento desencadenado por el usuario hasta que el código síncrono que se está ejecutando actualmente termine de ejecutarse.
Sin embargo, puedes hacer algo tú mismo para emular esto. Agregue pausas asíncronas donde libere el ciclo de ejecución que permite que se procesen los eventos, y luego reanude y verifique alguna condición de cancelación, luego puede lograr algo como lo que está pidiendo. Pero eso es mucho código y, a menos que el filtrado sea realmente lento, probablemente sea una mala idea.
Las propiedades calculadas terminarán completamente la ejecución.
Si la documentación anterior de Vue.js v2 aún tiene alguna relevancia, el siguiente pasaje indica cómo los cambios generan actualizaciones:
[...] Vue realiza actualizaciones de DOM de forma asíncrona. Siempre que se observe un cambio de datos, abrirá una cola y almacenará en búfer todos los cambios de datos que ocurran en el mismo bucle de eventos. Si el mismo observador se activa varias veces, se colocará en la cola solo una vez. Esta deduplicación almacenada en búfer es importante para evitar cálculos innecesarios y manipulaciones DOM. Luego, en el siguiente ciclo de eventos "tick", Vue vacía la cola y realiza el trabajo real (ya deduplicado).
Dado que JavaScript es un lenguaje de subproceso único, esto significaría que durante cualquier "tick" particular del bucle de eventos, no se procesarán otras acciones hasta que finalice la ejecución del código durante este "tick".
Si, hipotéticamente, el comportamiento interno de Vue fuera tal que estas actualizaciones se manejaran de forma puramente asíncrona, entonces existiría la posibilidad de condiciones de carrera entre dos ciclos de eventos cualesquiera, especialmente si el primer paso tarda mucho en completarse mientras que el segundo finaliza rápidamente. Detener la ejecución de una propiedad calculada en parte, incluso si fuera posible, también podría provocar que no se activen los efectos secundarios normalmente desencadenados por la ejecución de la propiedad calculada (mala práctica, pero ese es otro tema).
Estas inconsistencias en el comportamiento causarían todo tipo de problemas para mantener la consistencia en el estado de la aplicación, lo cual es un problema que haría que cualquier marco reactivo fuera realmente inútil.