内容下载同步
Content download synchronization
我有四个 html 元素,其中以不同的速度从服务器传来不同数量的内容(文本和图像)。如何在所有内容都到所有元素后才显示它们的内容?
我想一开始就显示占位符,只有在所有内容都准备好显示给用户时才删除它们。
虽然我发现这张随机图像 API 慢得令人痛苦,但它非常适合演示。您可以按以下方法处理;
var imgPrs = Array.from({length: 4})
.map(_ => fetch("https://unsplash.it/300/400/?random").then(res => res.blob()));
Promise.all(imgPrs)
.then(blob => document.querySelectorAll("#container img")
.forEach((img, i) => img.src = (window.URL || window.webkitURL).createObjectURL(blob[i])));
#container {
display: flex;
flex-wrap: wrap;
justify-content: space-evenly;
align-items: center;
width: 80vw;
height: 60vw;
background-color: #000;
box-sizing: border-box;
}
.tl {
width: 45%;
height: 45%;
background-color: #ccc;
}
.tr {
width: 45%;
height: 45%;
background-color: #bbb;
}
.bl {
width: 45%;
height: 45%;
background-color: #aaa;
}
.br {
width: 45%;
height: 45%;
background-color: #999;
}
<div id="container">
<img class="tl">
<img class="tr">
<img class="bl">
<img class="br">
</div>
我有四个 html 元素,其中以不同的速度从服务器传来不同数量的内容(文本和图像)。如何在所有内容都到所有元素后才显示它们的内容?
我想一开始就显示占位符,只有在所有内容都准备好显示给用户时才删除它们。
虽然我发现这张随机图像 API 慢得令人痛苦,但它非常适合演示。您可以按以下方法处理;
var imgPrs = Array.from({length: 4})
.map(_ => fetch("https://unsplash.it/300/400/?random").then(res => res.blob()));
Promise.all(imgPrs)
.then(blob => document.querySelectorAll("#container img")
.forEach((img, i) => img.src = (window.URL || window.webkitURL).createObjectURL(blob[i])));
#container {
display: flex;
flex-wrap: wrap;
justify-content: space-evenly;
align-items: center;
width: 80vw;
height: 60vw;
background-color: #000;
box-sizing: border-box;
}
.tl {
width: 45%;
height: 45%;
background-color: #ccc;
}
.tr {
width: 45%;
height: 45%;
background-color: #bbb;
}
.bl {
width: 45%;
height: 45%;
background-color: #aaa;
}
.br {
width: 45%;
height: 45%;
background-color: #999;
}
<div id="container">
<img class="tl">
<img class="tr">
<img class="bl">
<img class="br">
</div>