Javascript 承诺。所有的图片列表
我有以下代码,它从imagesList中的URL列表中获取图像,然后将图像添加到Dropzone框中。我的问题是,图像在Dropzone框中以相当随机的顺序出现,而不是在imagesList中的顺序 我知道如果我使用Promise.All,这可能是可以修复的,但我不知道如何在Promise.All中编写以下代码。我试了很长时间,但都失败了 请帮忙Javascript 承诺。所有的图片列表,javascript,promise,Javascript,Promise,我有以下代码,它从imagesList中的URL列表中获取图像,然后将图像添加到Dropzone框中。我的问题是,图像在Dropzone框中以相当随机的顺序出现,而不是在imagesList中的顺序 我知道如果我使用Promise.All,这可能是可以修复的,但我不知道如何在Promise.All中编写以下代码。我试了很长时间,但都失败了 请帮忙 var imagesList = ["/img1.jpg", "/img2.jpg", "/img3.jpg"]; for (var i =
var imagesList = ["/img1.jpg", "/img2.jpg", "/img3.jpg"];
for (var i = 0; i < imagesList.length; i++) {
let name = imagesList[i];
name = name.substring(name.lastIndexOf('/') + 1);
fetch(imagesList[i])
.then(res => res.blob())
.then(blob => {
let file = new File([blob], name, blob);
myDropzone1.addFile(file);
});
}
var-imagesList=[“/img1.jpg”、“/img2.jpg”、“/img3.jpg”];
对于(var i=0;ires.blob())
.然后(blob=>{
let file=新文件([blob],名称,blob);
myDropzone1.addFile(文件);
});
}
以下是一个示例,说明了如何做到这一点
基本上,对于imagesList
中的每个url,您都会生成一个承诺。
您将所有这些承诺放在Promise.all
中,当加载所有图像时,它将返回另一个承诺,并将按照传入的顺序进行迭代
var imagesList = ["/img1.jpg", "/img2.jpg", "/img3.jpg"];
Promise.all(imagesList.map(url => {
const name = url.substring(name.lastIndexOf('/') + 1);
return fetch(url)
.then(res => res.blob())
.then(blob => new File([blob], name, blob)
});
})).then(results => results.forEach(file => myDropzone1.addFile(file)));
如果您需要澄清,请检查并随时提问
希望能有所帮助;) 我希望这会有所帮助
函数getFile(项){
返回新承诺((解决、拒绝)=>{
让name=item.substring(item.lastIndexOf('/')+1);
取回(物品)
.then(res=>res.blob())
.然后(blob=>{
let file=新文件([blob],名称,blob);
解决(文件);
});
})
}
让imagesList=[“/img1.jpg”、“/img2.jpg”、“/img3.jpg”];
让promises=imagesList.map(item=>getFile(item));
允诺
.所有(承诺)
。然后(文件=>{
files.forEach(file=>myDropzone1.addFile(file));
})