what libreria firebaseapp dev rxjs

rxjs - libreria - subject angular



¿Qué es un `Scheduler` en RxJS? (1)

Los planificadores de Rx proporcionan una abstracción que permite que el trabajo se programe para ejecutarse, posiblemente en el futuro, sin que el código de llamada necesite conocer el mecanismo utilizado para programar el trabajo.

Cada vez que un método Rx necesita generar una notificación, programa el trabajo en un programador. Al proporcionar un planificador al método Rx en lugar de utilizar el predeterminado, puede controlar sutilmente cómo se envían esas notificaciones.

En las implementaciones del lado del servidor de Rx (como Rx.NET), los programadores juegan un papel importante. Le permiten programar trabajos pesados ​​en el grupo de subprocesos o subprocesos dedicados, y ejecutar la suscripción final en el subproceso de interfaz de usuario para que pueda actualizar su interfaz de usuario.

Al usar RxJs, en realidad es bastante raro que deba preocuparse por el argumento del planificador para la mayoría de los métodos. Dado que JavaScript es esencialmente de un solo subproceso, no hay muchas opciones para la programación y los programadores predeterminados suelen ser la opción correcta.

Las únicas opciones reales son:

  • immediateScheduler : ejecuta el trabajo de forma sincrónica e inmediata. Algo así como no usar un planificador en absoluto. El trabajo programado, por lo tanto, se garantiza que se ejecute sincrónicamente.
  • currentThreadScheduler : similar a immediateScheduler en que el trabajo se ejecuta inmediatamente. Sin embargo, no ejecuta el trabajo de forma recursiva. Entonces, si el trabajo se está ejecutando y programa más trabajo, entonces ese trabajo adicional se pone en cola para ejecutarse después de que finalice el trabajo actual. Por lo tanto, el trabajo a veces se ejecuta sincrónicamente y a veces de forma asincrónica. Este programador es útil para evitar desbordamientos de pila o recursión infinita. Por ejemplo, Rx.Observable.of(42).repeat().subscribe() causaría una recursión infinita si se ejecutara en el planificador immediate , pero dado que return ejecuta en el planificador currentThread de manera predeterminada, se evita la recursión infinita.
  • timeoutScheduler : el único programador que admite el trabajo programado para ejecutarse en el futuro. Esencialmente usa setTimeout para programar todo el trabajo (aunque si programa el trabajo para que se ejecute "ahora", entonces usa otros métodos asincrónicos más rápidos para programar el trabajo). Se garantiza que cualquier trabajo programado en este programador se ejecutará de forma asincrónica.

Puede haber más ahora, como un programador que programa el trabajo en los cuadros de animación del navegador, etc.

Si está intentando escribir código comprobable, casi siempre desea proporcionar el argumento del planificador. Esto se debe a que en sus pruebas unitarias, testScheduler instancias testScheduler , lo que permitirá que su prueba unitaria controle el reloj utilizado por su código Rx (y así controle el tiempo exacto de las operaciones).

He visto el término Scheduler mucha frecuencia en la documentación.

Pero, ¿qué significa este término? Incluso no sé cómo usar un llamado Scheduler . La documentación oficial no me dijo qué es exactamente un Scheduler . ¿Es esto solo un concepto común o un concepto específico en RxJS?