javascript - 如何从此函数中获取 downloadURL?
问题描述
我想从此函数中获取 downloadURL。但是,它不等待得到它。所以这个函数不返回downloadURL。我怎么才能得到它??
uploadProfileImage = async (uid, file) => {
let userRef = this.str.ref(`${uid}`).child(`images/avatar.png`);
const uploadTask = userRef.put(file);
uploadTask.on(firebase.storage.TaskEvent.STATE_CHANGED, snapshot => {
let progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
console.log('Upload is ' + progress + '% done');
switch (snapshot.state) {
case firebase.storage.TaskState.PAUSED:
console.log('Upload is paused');
break;
case firebase.storage.TaskState.RUNNING:
console.log('Upload is running');
break;
default:
}
}, error => {
console.log('[Error] ', error);
}, async () => {
const downloadUrl = await uploadTask.snapshot.ref.getDownloadURL()
// update firebase database
this.updateUserInfo(uid, { profileImage: downloadUrl });
});
}
解决方案
一种方法是简单地跟进 google在此处提供的文档
uploadProfileImage = (uid, file) => {
let userRef = this.str.ref(`${uid}`).child(`images/avatar.png`);
const uploadTask = userRef.put(file);
uploadTask.on(firebase.storage.TaskEvent.STATE_CHANGED, snapshot => {
let progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
console.log('Upload is ' + progress + '% done');
switch (snapshot.state) {
case firebase.storage.TaskState.PAUSED:
console.log('Upload is paused');
break;
case firebase.storage.TaskState.RUNNING:
console.log('Upload is running');
break;
default:
}
}, error => {
console.log('[Error] ', error);
}, () => {
uploadTask.snapshot.ref.getDownloadURL().then((downloadUrl)=>{
// update firebase database
this.updateUserInfo(uid, { profileImage: downloadUrl });
}
});
}
我假设你的变量是正确的
推荐阅读
- r - 无法在R中覆盖两层地图
- javascript - 使用Javascript删除随机生成的类和ID?
- discord.js - 如何创建语音通道链接
- r - 如何将 log2 转换的可视化合并到函数中?
- selenium - 等到 Page_loaded in selenium
- networking - Mosquitto:以仅本地模式启动但无法修复
- docker - 我想将配置文件从容器同步到主机,我哪里出错了,我该怎么办?
- powershell - PowerShell 命令 Set-WinUILanguageOverride:没有效果
- javascript - 重构嵌套对象
- oracle - Entity Framework Core 5 不支持 Oracle 10G?