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

179
Vistas
¿Qué comprueba hasPendingMacrotasks y hasPendingMicrotasks?

¿Cuál es la diferencia entre hasPendingMacrotasks o hasPendingMicrotasks dentro de NgZone? La documentación parece carecer de información. Todo lo que sé es que devuelven un valor booleano. Pero, ¿qué están buscando exactamente? ¿Qué se considera una microtarea? ¿Y qué se considera una tarea macro?

 class NgZone { static isInAngularZone() : boolean static assertInAngularZone() : void static assertNotInAngularZone() : void constructor({enableLongStackTrace = false}: any) run(fn: () => any) : any runGuarded(fn: () => any) : any runOutsideAngular(fn: () => any) : any onUnstable : EventEmitter<any> onMicrotaskEmpty : EventEmitter<any> onStable : EventEmitter<any> onError : EventEmitter<any> isStable : boolean hasPendingMicrotasks : boolean hasPendingMacrotasks : boolean }

Mi mejor suposición es que micro se refiere a tareas dentro de una clase específica, mientras que macro probablemente se refiere a una tarea con respecto a toda la aplicación. ¿Alguien puede verificar o confirmar esta suposición? ¿O arrojar algo de luz sobre los detalles?

Documentos de NgZone:

https://angular.io/docs/ts/latest/api/core/index/NgZone-class.html#!#hasPendingMicrotasks-anchor

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Hay tres tipos de tareas

1) Microtarea :

Una microtarea es un trabajo que se ejecutará lo antes posible en un marco de pila vacío. Se garantiza que una microtarea se ejecutará antes de que el entorno host realice la representación o las operaciones de E/S. Una cola de microtareas debe estar vacía antes de que se ejecute otra MacroTask o EventTask.

es decir Promise.then() ejecuta en microtarea

2) Macrotarea

Las macrotareas se intercalan con las operaciones de procesamiento y E/S del entorno del host. Se garantiza que se ejecutarán al menos una vez o se cancelarán (algunos pueden ejecutarse repetidamente, como setInterval ). Las tareas de macro tienen un orden de ejecución implícito.

es decir, setTimeout , setInterval , setImmediate

3) Tarea de evento

EventTasks son similares a las tareas de macro, pero a diferencia de las tareas de macro, es posible que nunca se ejecuten. Cuando se ejecuta una EventTask, se adelanta a la siguiente tarea que sea la cola de tareas macro. Las tareas de eventos no crean una cola.

es decir, click del usuario, mousemove , cambio de estado XHR .

¿Por qué es útil saber si alguna de las tareas se está realizando actualmente?

  • Saber cuándo se ha ejecutado una tarea y una cola de microtareas está vacía permite que los marcos sepan cuándo es el momento de representar la interfaz de usuario.

  • El seguimiento de cuándo se ejecutan todas las tareas programadas permite que un marco de prueba sepa cuándo se ha completado una prueba asíncrona.

ng_zone.ts

 private checkStable() { if (this._nesting == 0 && !this._hasPendingMicrotasks && !this._isStable) { try { this._nesting++; this._onMicrotaskEmpty.emit(null); } finally { this._nesting--; if (!this._hasPendingMicrotasks) { try { this.runOutsideAngular(() => this._onStable.emit(null)); } finally { this._isStable = true; } } } } }

ingrese la descripción de la imagen aquí

Ver también

  • ¿Cuál es el uso de Zone.js en Angular 2?
over 4 years ago · Santiago Trujillo 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