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.
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! :)
Komentar yang paling membantu
Tentu, saya akan melihat apakah saya bisa mendapatkannya dalam minggu depan :)