Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:如何在函数中毫不延迟地执行函数?_Javascript_Function_Nested - Fatal编程技术网

Javascript:如何在函数中毫不延迟地执行函数?

Javascript:如何在函数中毫不延迟地执行函数?,javascript,function,nested,Javascript,Function,Nested,我正在尝试使用javascript制作一个自动图像库,将img语句(+css的一些附加内容)粘贴到html中。 所有图像都位于同一文件夹中,并命名为图像(1)、图像(2)。。。显然,客户端不知道文件夹中文件的名称,也不知道文件的数量。 附加过程工作得很好,但我无法找到一种方法来停止不给自己的图片数量。 当浏览器找不到下一个图像时,我尝试使用“.onerror”停止追加过程,但它总是被跳过直到结束(导致无限循环(我使用的是"i之所以跳过一些,是因为加载每个图像和调用onerror都需要时间,但是您

我正在尝试使用javascript制作一个自动图像库,将img语句(+css的一些附加内容)粘贴到html中。 所有图像都位于同一文件夹中,并命名为图像(1)、图像(2)。。。显然,客户端不知道文件夹中文件的名称,也不知道文件的数量。 附加过程工作得很好,但我无法找到一种方法来停止不给自己的图片数量。
当浏览器找不到下一个图像时,我尝试使用“.onerror”停止追加过程,但它总是被跳过直到结束(导致无限循环(我使用的是"i之所以跳过一些,是因为加载每个图像和调用onerror都需要时间,但是您在一个循环中执行所有代码,而不等待错误,因此即使出现错误,在当前循环周期之后触发错误事件之前,标志变量也不会更改

这样做的方法是,如果某个条件尚未满足,则使用递归。此外,我建议使用Image进行测试,然后将其附加到文档中 此外,您甚至不需要错误,您只需在成功加载时附加它即可

所以你可以像这样使用递归

var cur = 0
function getImg() {
    var img= new Image ()
    img.src = "image (" + (cur++) + ").jpg"
    img.onload = () => {
            fotos.appendChild(img)//or other span elements etc that have img as a child
            
            getImg()
        }
//if you want to know when it ended then you can use .onerror
       img.onerror = () => console.log("done")
}

getImg()

快速而肮脏的解决方案。向文件发出HEAD ajax请求。如果它返回成功响应代码,则它存在、追加、递增、重复。如果它返回404或其他错误响应代码,则它不存在,则停止处理。使用HEAD请求与GET请求的原因是,HEAD请求不会返回图像数据。由于您只是试图确定文件是否存在,因此不需要数据。请参阅。似乎可以回答您的问题。@Taplar我们很有兴趣看到该解决方案。很抱歉,响应太晚。我尝试了上述所有方法,但仅对图像本身有效,我似乎无法获得我真正需要的链接和范围能够点击图片,看到它更大,…有没有办法我可以附加整个字符串?
var cur = 0
function getImg() {
    var img= new Image ()
    img.src = "image (" + (cur++) + ").jpg"
    img.onload = () => {
            fotos.appendChild(img)//or other span elements etc that have img as a child
            
            getImg()
        }
//if you want to know when it ended then you can use .onerror
       img.onerror = () => console.log("done")
}

getImg()