Ng-lazyload-image: Batas Waktu Busur Derajat

Dibuat pada 6 Des 2016  ·  7Komentar  ·  Sumber: tjoskar/ng-lazyload-image

Saat menjalankan tes busur derajat, mereka akan kehabisan waktu pada komponen apa pun menggunakan arahan pemuatan malas. Busur derajat mengawasi ngZone untuk mengetahui kapan panggilan xhr yang tertunda, batas waktu, dan interval selesai sebelum dijalankan.
Dalam scroll-listener.ts .sampleTime(100, scheduler) membuat interval yang tidak akan pernah berakhir selama tes busur derajat. Saya menemukan cara untuk mengatasinya dengan menambahkan kode berikut ke arahan

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

Menurut ini https://github.com/angular/protractor/issues/3349#issuecomment -232253059 Busur derajat menonton ngZone utama jadi jika kita menjalankan interval darinya busur derajat berjalan dengan sukses. Saya tidak yakin bagaimana ini akan bekerja dengan tes busur derajat pada proyek ini, tetapi saya dapat mencoba membuat permintaan tarik ketika saya mendapat kesempatan.

Komentar yang paling membantu

Tentu, saya akan melihat apakah saya bisa mendapatkannya dalam minggu depan :)

Semua 7 komentar

Terima kasih atas tanggapan Anda.
Namun saya tidak dapat mereproduksi ini. Saya menggunakan busur derajat dalam proyek ini dan tampaknya berfungsi dengan baik. Namun demikian, mungkin ide yang baik untuk menggunakan ngZone.runOutsideAngular untuk peningkatan kinerja. Tetapi jika kita menggunakan ngZone.runOutsideAngular , kita perlu menggunakan ChangeDetectorRef setelah kita malas memuat gambar, bukan? Jadi angular tahu bahwa tampilan perlu dirender ulang.

Karena saya tidak dapat mereproduksi ini dan sepertinya Anda memiliki solusi yang berfungsi. Apakah Anda ingin mengirimkan PR?

Tentu, saya akan melihat apakah saya bisa mendapatkannya dalam minggu depan :)

Saya membuat versi baru dari plugin. Bisakah Anda mencobanya: npm install [email protected] untuk melihat apakah itu memperbaiki masalah?

Tentu! Saya akan mencobanya hari ini

Menutup ini. Beri tahu saya jika Anda masih mendapatkan waktu tunggu.

@tjoskar baru saja menguji ini hari ini dan berhasil, terima kasih atas perbaikannya! :)

Apakah halaman ini membantu?
0 / 5 - 0 peringkat