@lios1

Как дождаться .map после чего, выполнить другую операцию?

Я загружаю фотки, у меня появляется массив файлов, хочу перебрать массив файлов, после чего добавить эти файлы в firebase и получить ссылки этих фото и запушить их в пустой массив. Как дождаться, пока до конца сформируется массив ссылок, ничего уже не будет добавляться в базу данных и тогда уже отправить этот массив ссылок в базу данных для информации? Как сделать быстрее, через промисы наверное, но чтобы все работало, где ставить resolve?

const handleSubmit = async () => {
    let arr = []

    for(let file of files){
      console.log(new Date())
      const storageRef = ref(storage, `${props.id}/${file.name}`);
      await uploadBytes(storageRef, file)
        .then((snapshot) => {
          return getDownloadURL(snapshot.ref)
        })
        .then((url)=>{
          arr.push(url);
          console.log(url)
        })
    }

    console.log('success')
}
  • Вопрос задан
  • 134 просмотра
Решения вопроса 1
w13vitaliy
@w13vitaliy
self-taught developer since 2020
Вы можете использовать Promise.all чтобы дождаться пока все фото добавятся и затем then
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@lios1 Автор вопроса
Вот ответ, может кто-то будет делать

Promise.all(files.map(file => {
        const storageRef = ref(storage, `${name}/${file.name}`);
        return uploadBytes(storageRef, file).then(() => {
          return getDownloadURL(storageRef).then((url)=>{
            return url;
          })
        })
      })).then((values)=>{
        console.log(values)
      })
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы