请教关于延迟执行for(){}问题
javascript吧
全部回复
仅看楼主
level 1
WinVS 楼主
  各位大佬,本人是JS初学小白,最近在学习用 hta 编一个小工具,用来批量获取指定文件夹内所有图片的尺寸。
  我的思路是:
  1、用fso对象获得所有图片
  2、创建img对象,把获得的图片逐个加载到img中,查看img对象中图片的像素尺寸
  初步写了一小段,遇到的问题是:有些图片得不到尺寸,我想是不是图片没有加载完成,脚本运行太快,获得不要
正确的
尺寸?
  大概的代码是这样:
function 操作() {
for (; !文件集合.atEnd(); 文件集合.moveNext())
{if (文件集合.item().Type == 文件类型) // 只处理图片格式文件
{
var 图片 = document.createElement("img"); // 创建图片元素
图片.src = 文件集合.item(); // 设置当前文件为图片路径
document.getElementsByTagName("div")[0].insertAdjacentElement("beforeend", 图片); // 把图片放到div容器中
图片.style.zoom = document.documentElement.clientHeight/图片.height; // 图片缩放到可见
结果 += "文件名:" + 文件集合.item() + "  宽度:" + 图片.width + "  高度:" + 图片.height + "\r\n";
状态栏.innerText = 结果;
}
容器.removeChild(容器.childNodes[0]); // 移除图片
}
alert(结果)}
  搜索到好多关于在for(){}中用settimeOut()的文章,完全看不懂,请各位大佬指教为盼,谢谢!
2019年10月26日 15点10分 1
level 12
不要用延迟,js本身是异步编程,通过异步方式解决问题。
延迟是非常危险的操作,不确定性太多,不可掌控。
如果你是想要获取一组图片的大小,可以这样:
let images = ['icon.jpg', 'icon.jpg', 'icon.jpg'];
images.forEach(src => {
let oImg = new Image();
oImg.src = src;
oImg.onload = () => {
console.log(oImg.width, oImg.height);
}
});
2019年10月31日 09点10分 2
不知道楼主说什么,但是有时候for延迟很好用
2019年11月06日 02点11分
level 4
用setI循环不可以吗,设置i执行到某个值清除setI
2019年11月03日 03点11分 3
level 5
感觉这个算法不太好,有没有其他的思路优化一下
2019年11月03日 18点11分 4
level 13
不知道你说什么,但是想让for延迟,只能用promise
2019年11月06日 02点11分 5
1