gpt4 book ai didi

javascript - Firebase getDownloadURL 返回结果

转载 作者:行者123 更新时间:2023-12-03 04:18:21 25 4
gpt4 key购买 nike

我有一个函数,首先将图像保存到 Firebase,然后返回下载网址。现在我可以取回url(请参阅return url),但我不知道如何为整个函数返回它,因为它是嵌套,并且由于此函数异步运行,如果在 getDownloadURL 返回之前尚未分配该 url,则该 url 将返回空。

函数调用位置

takePictureTemp() {
var storedImg: any = this.usersale.submitImgTemp();
}

/providers/usersale-data.ts

submitImgTemp() {

let storageRef = firebase.storage().ref();
// Create a timestamp as filename
const filename = Math.floor(Date.now() / 1000);

// Create a reference to 'images/todays-date.jpg'
const imageRef: any = storageRef.child(`userImages/${filename}.jpg`);

imageRef.putString("data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUA AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO 9TXL0Y4OHwAAAABJRU5ErkJggg==", firebase.storage.StringFormat.DATA_URL).then((snapshot)=> {
imageRef.getDownloadURL().then(function(url) {
return url;
}).catch(function(error) {
// Handle any errors here
console.log(error);
});
});

}

最佳答案

不要让submitImgTemp() 弄清楚如何处理url,而是让submitImgTemp() 的调用者处理要做什么。

takePictureTemp() {
this.usersale.submitImgTemp().then(d => {
// d is your url
}).catch(err => {})
}

submitImgTemp() {
return new Promise(function(resolve, reject){
// do your saving here
// on successful save call resolve(url)
// on error call reject(error)
})
}
  • 我不知道作用域在哪里,所以这里的基本思想是进行同步调用,完成后,调用者可以在 then 部分处理它。之前的答案是错误的,因为我认为一个主题正在返回,但它是 Promise。
  • 您正在调用异步代码,因此您必须通过将调用设为异步来进行相应处理,因为您不知道该方法何时返回。

关于javascript - Firebase getDownloadURL 返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44054676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com