Firebase return getDownloadURL 结果
Firebase return result of getDownloadURL
我有一个功能,首先将图像保存到 Firebase,然后取回下载 url。现在我能够取回 url
(请参阅 return url
),但我不知道如何 return 作为一个整体来使用它,因为它是嵌套的,并且因为此函数异步运行,如果 return url 在 getDownloadURL
已 returned 之前未分配,则该函数将为空。
调用函数的地方
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 部分处理它。之前的答案是错误的,因为我认为一个主题是 return 但它是 Promise.
- 您正在调用异步代码,因此您还必须通过调用异步来进行相应处理,因为您不知道该方法何时会 return。
我有一个功能,首先将图像保存到 Firebase,然后取回下载 url。现在我能够取回 url
(请参阅 return url
),但我不知道如何 return 作为一个整体来使用它,因为它是嵌套的,并且因为此函数异步运行,如果 return url 在 getDownloadURL
已 returned 之前未分配,则该函数将为空。
调用函数的地方
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 部分处理它。之前的答案是错误的,因为我认为一个主题是 return 但它是 Promise.
- 您正在调用异步代码,因此您还必须通过调用异步来进行相应处理,因为您不知道该方法何时会 return。