Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

176
Views
¿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

about 4 years ago · Santiago Trujillo
1 answers
Answer question

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?
about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!