метод:

у получить URL-адрес для загрузки, как только загрузка изображения будет завершена, а затем для downloadURL будет задано значение newAds.picLink (object.property), но в этом коде, поскольку загрузка выполняется

newAds.update({ picLink: downloadURL });

вызывается, который выдает ошибку, так как downloadURL в настоящее время недоступен и находится в процессе. Я решил эту проблему, установив setTimeOut на 8 секунд, что позволяет сначала полностью загрузить изображение, а затем получить downloadURL, но это не правильно.

Как я могу создать правильный обратный вызов, который устанавливает newAds.picLink = downloadURL после полной загрузки изображения?

 addSubmitted.addEventListener('click', e => {
 const newAds = _db.ref(userID).push();
 const newAd = {
 };

const ref = firebase.storage().ref();
const file = $('#exampleInputFile').get(0).files[0];
const name = (+new Date() + '-' + file.name);
const task = ref.child(name).put(file, {contentType: file.type});

function abc() {
    task.snapshot.ref.getDownloadURL().then((downloadURL) => {
        console.log('File available at', downloadURL);
        console.log(downloadURL);
        newAds.update({ picLink: downloadURL });
    });

    task.catch(error => {
        // Use to signal error if something goes wrong.
        console.log(`Failed to upload file and get link - ${error}`);
    });
}

setTimeout(abc,8000);

Ответы на вопрос(2)

Ваш ответ на вопрос