Ng-lazyload-image: Tiempos de espera del transportador

Creado en 6 dic. 2016  ·  7Comentarios  ·  Fuente: tjoskar/ng-lazyload-image

Al ejecutar la prueba de transportador, se agotarán los tiempos de espera en cualquier componente que utilice la directiva de carga diferida. Transportador observa la ngZone para saber cuándo se completan las llamadas xhr pendientes, los tiempos de espera y los intervalos antes de ejecutarse.
En el scroll-listener.ts el .sampleTime(100, scheduler) crea un intervalo que nunca terminará durante una prueba de transportador. Encontré una manera de solucionar esto agregando el siguiente código a la directiva

ngAfterContentInit() {
    this.ngZone.runOutsideAngular(() => { // run outside angular
      this.scrollSubscription = getScrollListener(this._scrollTarget)
        .filter(() => this.isVisible())
        .take(1)
        .switchMap(() => this.loadImage(this.lazyImage))
        .do(() => this.setImage(this.lazyImage))
        .finally(() => this.setLoadedStyle())
        .subscribe(() => this.ngOnDestroy(),
        error => {
          this.setImage(this.errorImg || this.defaultImg);
          this.ngOnDestroy();
        });
    });
  }

De acuerdo con este https://github.com/angular/protractor/issues/3349#issuecomment -232253059 Transportador observa la ngZone principal, por lo que si ejecutamos el intervalo, el transportador se ejecutará correctamente. No estoy seguro de cómo funcionaría esto con las pruebas de transportador en este proyecto, pero puedo intentar hacer una solicitud de extracción cuando tenga la oportunidad.

Comentario más útil

Claro, veré si puedo conseguir uno dentro de la próxima semana :)

Todos 7 comentarios

Gracias por tus comentarios.
Sin embargo, no puedo reproducir esto. Estoy usando un transportador en este proyecto y parece que funciona bien. Pero dicho esto, puede ser una buena idea usar ngZone.runOutsideAngular para mejorar el rendimiento. Pero si estamos usando ngZone.runOutsideAngular , necesitamos usar ChangeDetectorRef después de haber cargado la imagen de forma diferida, ¿verdad? Tan angular sabe que la vista necesita volver a rendirse.

Dado que no puedo reproducir esto y parece que tiene una solución que funciona. ¿Quieres enviar un PR?

Claro, veré si puedo conseguir uno dentro de la próxima semana :)

Creé una nueva versión del complemento. ¿Puedes probarlo: npm install [email protected] para ver si soluciona el problema?

¡Seguro! Lo probaré hoy

Cerrando esto. Avísame si aún tienes tiempos de espera.

@tjoskar acaba de probar esto hoy y funciona, ¡gracias por la solución! :)

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

vincent-cm picture vincent-cm  ·  10Comentarios

lares83 picture lares83  ·  3Comentarios

kodeine picture kodeine  ·  7Comentarios

sandeepdussa picture sandeepdussa  ·  9Comentarios

walfro picture walfro  ·  11Comentarios