首页 > 试题广场 >

js怎么控制一次加载一张图片,加载完后再加载下一张

[问答题]
js怎么控制一次加载一张图片,加载完后再加载下一张
JS取到所有src后,首先加载第一张,监听事件,ONEEROR或者ONLOAD事件被触发后,加载下一张
发表于 2019-01-12 10:14:40 回复(0)

呃呃呃,只有我点链接,看照片了嚒。。

发表于 2019-04-02 01:07:02 回复(0)
/*
1.通过promis和generator进行控制执行顺序,通过img.complete作为判断条件
2.通过onreadyStatechange,判断readyState=="complete"||readyState=="loaded"
3.通过onload
我先写一种实现方式吧
*/
var img_list = document.querySelectorAll("img");
//生成迭代器,返回值为新的 promise对象
function* loadImge(target) {
var i = 0,
len = target.length;
while (i < len) {
yield new Promise((resolve, reject) => {
resolve(target[i]);
})
i++
}


};
var imgItem = loadImge(img_list);
var imgSrc = [
'https://images.nowcoder.com/images/20190504/558938736_1556938017407_08BE24AA8CED88F49348A8C550F96FA3@0e_100w_100h_0c_1i_1o_90Q_1x',
'https://images.nowcoder.com/images/20180102/63_1514861814371_E573EC9DA05DFAC7340D94F1A6D246E3@0e_100w_100h_0c_1i_1o_90Q_1x'
];
(function() {
//运用闭包对i进行缓存
let i = 0;

function loadStack(src) {
let imgNext = imgItem.next();
//迭代器还有值
if (!imgNext.done) {
imgNext.value.then(item => {
item.setAttribute("src", src[i]);
i++;
if (item.complete && i < src.length) {
//递归执行
loadStack(src);
}
});
} else {
return;
}

}
loadStack(imgSrc);
})()
编辑于 2019-05-06 22:36:56 回复(2)
( ̄o ̄) . z Z
发表于 2019-01-28 08:35:39 回复(1)
图片加载写成一个函数,图片加载后递归调用 或者使用generator
编辑于 2019-01-17 22:51:32 回复(0)

load

发表于 2019-05-08 13:30:59 回复(0)
.
发表于 2019-04-25 17:42:15 回复(0)
<script>
let images = [
];
let count = 0;
let imgs = document.getElementsByClassName('img');
function loadImg(images) {
let that = this;
if (count == images.length) { return false }
let img = new Image();
img.src = images[count];
img.onload = function (e) {
imgs[count].src = img.src
count++;
setTimeout(function(){
that.loadImg(images)
},1000)
}
}
loadImg(images);
</script>
发表于 2019-04-23 14:59:24 回复(0)
懒加载,image  lazyload
发表于 2019-03-14 19:07:59 回复(0)
进去了
发表于 2019-03-14 07:12:15 回复(0)
写一个图片加载函数,给图片绑定onload事件,触发时传入下张图片地址再次调用图片加载函数
发表于 2019-03-04 12:46:35 回复(0)

请求来多张图片的src后,放入熟组,封装一个函数,randerpage,参数为这个熟组以及index。然后定一个onload事件里面randerpage(数组,index)执行,index一开始是零,randerpage执行完,index++


发表于 2019-02-26 09:49:43 回复(0)
懒加载
发表于 2019-02-21 21:24:20 回复(0)
踢踢踢
发表于 2019-02-06 23:41:28 回复(0)
这个场景不太懂,JS不是单线程的吗
发表于 2019-01-26 23:08:09 回复(1)
发表于 2019-01-09 23:28:36 回复(0)
上锁
发表于 2019-01-03 09:00:32 回复(0)
懒加载吗? onload 
发表于 2019-01-01 16:34:26 回复(0)
h
发表于 2018-12-28 08:38:45 回复(0)
事件监听 或者加 过渡结束事件--transitionEnd
发表于 2018-12-23 20:51:17 回复(0)