javascript - iphone图像在webapp和safari中加载缓慢
问题描述
我正在为 android 和 ios 创建一个 PWA。在 android 中没有图像加载问题.. 但在 ios safari 和 web 应用程序中加载图像有延迟。(假设我连续有 5 张图片。第 1 张图片将在第 2 张图片之后加载,然后再加载第 3 张图片)。我希望在所有图像都放置在标签中之后加载整个组件。
为此我做了这样的事情
.ts 文件
// data = [{imgSrc:'local address'},..]
public loaded: boolean = false;
this.getData.subscribe((data) => {
this.images = data;
this.loaded = true;
// tried like this also setTimeout(() => loaded = true, 1000);
});
.html 文件
<loader *ngIf="!loaded"></loader>
<div *ngIf="(loaded)">
<ul>
<li *ngFor="let item of images;let i=index;">
<span [style.backgroundImage]="'url('+ item.imgSrc +')'" </span>
</li>
</ul>
</div>
解决方案
首先,您可以预加载这些图像。
let images = new Array();
function preload(preloadImages) {
for (i = 0; i < preloadImages.length; i++) {
images[i] = new Image()
images[i].src = preloadImages[i];
}
}
this.getData.subscribe( (data)=>{
this.preload(data); // this will preload the images
setTimeout(()=>{
this.images = [{imgSrc:'local address'},..];
this.loaded = true;
}, 500);
});
推荐阅读
- java - android studio_firebase_storage_获取下载地址
- c# - 如何处理firebase短动态链接Onsuccess结果
- node.js - 将现有 NodeJS 项目转换为 TypeScript 时如何强制将所有文件视为模块
- sql - 通过 updated_at 和 creatd_at 之间的差异的活动记录子集
- sql-server - 可以在 SQL Server 中没有相应的 BEGIN TRAN 的情况下提交事务吗?
- docker - docker-compose 中的 Docker 容器无法通过主机名找到其他容器
- bash - 尝试在 bash 和 grep 中读取文件以获取子字符串,将该子字符串存储在数组中
- ibm-cloud-private - 用于在 IBM Cloud Private 上的微气候中构建内部循环的微服务构建器?
- python - AttributeError: 'dict' 对象没有属性 'to_csv' Google Analytics API Reporting V4
- ubuntu - cd .. 在 Makefile 中没有 ONESHELL 的情况下工作