Ng-lazyload-image: 量角器超时

创建于 2016-12-06  ·  7评论  ·  资料来源: tjoskar/ng-lazyload-image

运行量角器测试时,它们将在使用延迟加载指令的任何组件上超时。 量角器监视 ngZone 以了解挂起的 xhr 调用、超时和间隔在运行之前何时完成。
scroll-listener.ts.sampleTime(100, scheduler)创建了一个在量角器测试期间永远不会结束的间隔。 我通过将以下代码添加到指令中找到了解决此问题的方法

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();
        });
    });
  }

根据这个https://github.com/angular/protractor/issues/3349#issuecomment -232253059 量角器监视主要的 ngZone 所以如果我们运行它的间隔,量角器运行成功。 我不确定这将如何与该项目的量角器测试一起使用,但我可以尝试在有机会时提出拉取请求。

最有用的评论

当然,我会看看我是否能在下周内得到一个:)

所有7条评论

感谢您的反馈意见。
但是,我无法重现这一点。 我在这个项目中使用了量角器,它工作得很好。 但话虽如此,使用ngZone.runOutsideAngular来提高性能可能是个好主意。 但是如果我们使用ngZone.runOutsideAngular ,我们需要在延迟加载图像后使用ChangeDetectorRef ,对吗? 所以 angular 知道视图需要重新渲染。

由于我无法重现这一点,因此您似乎有一个可行的解决方案。 你想提交 PR 吗?

当然,我会看看我是否能在下周内得到一个:)

我创建了一个新版本的插件。 你可以试试看: npm install [email protected]是否能解决问题?

当然! 我今天试试

关闭这个。 如果您仍然超时,请告诉我。

@tjoskar今天刚刚测试了这个,它有效,谢谢你的修复! :)

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

AzerHeshim picture AzerHeshim  ·  5评论

vugar005 picture vugar005  ·  10评论

alisahinozcelik picture alisahinozcelik  ·  4评论

sandeepdussa picture sandeepdussa  ·  9评论

kodeine picture kodeine  ·  7评论