【发布时间】:2018-01-22 16:12:44
【问题描述】:
我有一项服务需要先将图片上传到 Firebase 存储并返回下载网址。获得下载网址后,我需要将其存储到 Firebase 实时数据库中。
但这里的问题是 Firebase 调用是异步的。
这是我的代码:
addCategory(category){
let storageRef = firebase.storage().ref(`category/${category.img_name}`);
//Upload file
storageRef.put(category.url)
.then((snapshot) => {
// Here i will get download url
var downloadUrl = snapshot.downloadURL;
category.category_icon = downloadUrl.toString();
})
//Problem occurs here return is executed before .then statement and my download url becomes undefined.
return this.http.post('https://app_name.cloudfunctions.net/api/products',body,{headers:headers})
.map(res =>res.json());
}
所以我需要知道是否有可能停止使此调用 (storageRef.put()) 同步,以便我的 return 语句仅在 .put() 调用完成后触发。
提前致谢!!
【问题讨论】:
标签: angular firebase firebase-realtime-database angular2-services firebase-storage