Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.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_Arrays_Loops_Asynchronous - Fatal编程技术网

Javascript 如何强制下载的文件保持在阵列中的相同位置?

Javascript 如何强制下载的文件保持在阵列中的相同位置?,javascript,arrays,loops,asynchronous,Javascript,Arrays,Loops,Asynchronous,目前,我的代码异步加载所有图像。这也意味着在我当前的实现中,一旦图像被完全下载,它就会被添加到fileArray中。由于并非所有图像的大小都相同,因此每个图像的下载在不同的时间完成,从而导致图像以随机顺序添加到阵列中 如何强制将图像按开始下载的顺序添加到文件阵列中?希望不要放弃async的好处(所有图像都同时下载) for(var i=0;i

目前,我的代码异步加载所有图像。这也意味着在我当前的实现中,一旦图像被完全下载,它就会被添加到fileArray中。由于并非所有图像的大小都相同,因此每个图像的下载在不同的时间完成,从而导致图像以随机顺序添加到阵列中

如何强制将图像按开始下载的顺序添加到文件阵列中?希望不要放弃async的好处(所有图像都同时下载)

for(var i=0;i
您可以使用异步回调并将其映射到:

额外的好处是您不需要检查数组大小来确认完成。

您可以使用异步回调并将其映射到:


额外的好处是,您不需要检查数组大小来确认是否完成。

Bingo。这起作用很好。我发现非常有趣的是,几乎每次我在web开发中遇到编码问题时,都是因为我对承诺理解得不够透彻。你能推荐一个链接吗?我的答案中的两个都有我认为我需要知道的所有文档。我只是强迫自己开始使用它们,因为我厌倦了安装和使用它们。这是一个很好的库,但是有太多的函数无法跟上。承诺更简单、更一致。我没有看到那些链接^-^太棒了!ThxHi!我又陷入了一个非常类似的问题。你能看一下吗?答对 了这起作用很好。我发现非常有趣的是,几乎每次我在web开发中遇到编码问题时,都是因为我对承诺理解得不够透彻。你能推荐一个链接吗?我的答案中的两个都有我认为我需要知道的所有文档。我只是强迫自己开始使用它们,因为我厌倦了安装和使用它们。这是一个很好的库,但是有太多的函数无法跟上。承诺更简单、更一致。我没有看到那些链接^-^太棒了!ThxHi!我又陷入了一个非常类似的问题。你能看一下吗?
for (var i = 0; i < imageArray.length; i++) {
            imageArray[i].download(function(err, contents) {
                fileArray.push(base64_encode(contents));
                console.log("SIZE: "+fileArray.length);
                if (fileArray.length == 9) {
                    res.render("home", {keyArray: keyArray, titleArray: titleArray, usernameArray: usernameArray, imageArray: fileArray});
                }
            });
        }
Promise.all(imageArray.map(function(image) {
    return new Promise(function(resolve, reject) {
        image.download(function(err, contents) {
            if (err) {
                reject(err);
            } else {
                resolve(base64_encode(contents));
            }
        });
    });
})).then(function(fileArray) {
    res.render("home", {keyArray: keyArray, titleArray: titleArray, usernameArray: usernameArray, imageArray: fileArray});
}).catch(function(err) {
    // uh oh
});