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