Итак, что я пытаюсь сделать, это сохранить каждый downloadURL из нескольких обещаний (файлов, которые я загружаю) в массиве, просматривая их. Что происходит, я получаю первый вывод для каждого элемента, независимо от того, сколько элементов я получаю, он просто продолжает давать мне первый downloadURL из первого обещания.
Если бы я мог как-то пометить каждое из обещаний, чтобы они не go над каждым другим и дайте мне одинаковое значение для каждого файла, или myb остановите каждый и дождитесь окончания первого, чтобы начать второй. Первое решение звучит намного лучше для меня, но я до сих пор не знаю, как бы я это сделал.
pushUpload(upload: Upload) {
let storageRef = firebase.storage().ref();
this.uploadTask = storageRef.child(`${this.basePath}/${upload.file.name}`).put(upload.file);
this.uploadTask.on(firebase.storage.TaskEvent.STATE_CHANGED,
(snapshot) => {
// upload in progress
upload.progress = Math.ceil((snapshot.bytesTransferred / snapshot.totalBytes) * 100)
},
(error) => {
// upload failed
console.log(error)
},
() => {
// upload success
this.uploadTask.snapshot.ref.getDownloadURL().then((url)=>{
this.uploadInfo.push(url)
})
})
};
uploadMultiple() {
let files = this.selectedFiles
let filesIndex = _.range(files.length)
_.each(filesIndex, (idx)=>{
this.currentUpload = new Upload(files[idx]);
this.service.pushUpload(this.currentUpload);
})
}