Javascript 无法使用js循环下载firebase存储文件

Javascript 无法使用js循环下载firebase存储文件,javascript,loops,firebase-realtime-database,firebase-storage,Javascript,Loops,Firebase Realtime Database,Firebase Storage,我正在尝试使用javascript循环获取firebase存储的一些文件的下载url,如下面的代码所示。它正确地创建元素,但只为第二个元素指定一个“src”(在使用2个文件的情况下) var photocontainer=document.getElementById('photocontainer'); var photoNumber=firebase.database(); photoNumber.on('value',函数(快照){ 对于(var i=0;i

我正在尝试使用javascript循环获取firebase存储的一些文件的下载url,如下面的代码所示。它正确地创建元素,但只为第二个元素指定一个“src”(在使用2个文件的情况下)

var photocontainer=document.getElementById('photocontainer');
var photoNumber=firebase.database();
photoNumber.on('value',函数(快照){
对于(var i=0;i
当getDownloadURL()从Firebase获取其文件路径时,“photo.src=url;”是第二个元素对象。

它通过创建一个数组,将url添加到数组中,然后删除以前的元素并在数组中创建新的元素来工作。forEach()。

知道如何修复它吗?要处理异步请求,尝试元素的ID:
photo.ID='imgabc-'+i;photostorage.child(i+key).getDownloadURL().then(function(url){document.getElementById('imgabc-'+i).src=url;}
它不起作用。我在循环中写了console.log,在getDownloadURL()中写了另一个。然后()…我发现i值不一样。它没有按顺序排列。
var photosContainer = document.getElementById('photosContainer');
var photoNumber = firebase.database().ref('main/' + keyParent).child(key + '/number_photos');

photoNumber.on('value', function(snapshot){

  for(var i = 0; i < snapshot.val(); i++){

   var divPhoto = document.createElement('div');
   photosContainer.appendChild(divPhoto);
   var photo = document.createElement('img');
   photo.style.width = '100%';
   divPhoto.appendChild(photo);
   var photosStorage = firebase.storage().ref('main/');
   photosStorage.child(i + key).getDownloadURL().then(function(url) {
      photo.src = url;
   }).catch(function(error) {
     // Handle any errors
     console.log('An error occurred.')
   });
  }
 })