Ng-lazyload-image: Tempo limite do transferidor

Criado em 6 dez. 2016  ·  7Comentários  ·  Fonte: tjoskar/ng-lazyload-image

Ao executar o teste do transferidor, eles expirarão em qualquer componente usando a diretiva de carregamento lento. O transferidor observa o ngZone para saber quando chamadas xhr pendentes, tempos limite e intervalos são concluídos antes da execução.
Em scroll-listener.ts o .sampleTime(100, scheduler) cria um intervalo que nunca terminará durante um teste de transferidor. Eu encontrei uma maneira de contornar isso adicionando o seguinte código à diretiva

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 acordo com este https://github.com/angular/protractor/issues/3349#issuecomment -232253059 O transferidor observa o ngZone principal, portanto, se executarmos o intervalo fora dele, execute com êxito. Não tenho certeza de como isso funcionaria com os testes do transferidor neste projeto, mas posso tentar fazer uma solicitação de pull quando tiver oportunidade.

Comentários muito úteis

Claro, vou ver se consigo um na próxima semana :)

Todos 7 comentários

Obrigado pelo seu feedback!
No entanto, não posso reproduzir isso. Estou usando um transferidor neste projeto e parece funcionar bem. Mas, dito isso, pode ser uma boa ideia usar ngZone.runOutsideAngular para melhorar o desempenho. Mas se estivermos usando ngZone.runOutsideAngular , precisamos usar ChangeDetectorRef depois de carregar a imagem lentamente, certo? Tão angular sabe que a vista precisa ser renderizada novamente.

Já que não consigo reproduzir isso e parece que você tem uma solução funcionando. Você quer enviar um PR?

Claro, vou ver se consigo um na próxima semana :)

Criei uma nova versão do plugin. Você pode experimentar: npm install [email protected] para ver se ele corrige o problema?

Certo! Vou experimentar hoje

Fechando isso. Avise-me se você ainda tiver tempo limite.

@tjoskar acabou de testar isso hoje e funciona, obrigado pela correção! :)

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

el-davo picture el-davo  ·  4Comentários

stratio84 picture stratio84  ·  6Comentários

walfro picture walfro  ·  11Comentários

lares83 picture lares83  ·  3Comentários

vugar005 picture vugar005  ·  10Comentários