【问题标题】:Firebase return result of getDownloadURLgetDownloadURL 的 Firebase 返回结果
【发布时间】:2017-10-18 16:14:15
【问题描述】:

我有一个功能,它首先将图像保存到 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);
        });
    });     

}

【问题讨论】:

    标签: javascript typescript firebase ionic-framework firebase-storage


    【解决方案1】:

    不是让 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。
    • 您正在调用异步代码,因此您必须通过使您的调用异步进行相应处理,因为您不知道该方法何时返回。

    【讨论】:

    • ERROR TypeError: this.usersale.submitImgTemp(...).subscribe is not a function
    • 知道了!超级有帮助,绝对让我对 Promise/async 有了更牢固的把握。谢谢!
    猜你喜欢
    • 2020-05-13
    • 1970-01-01
    • 2019-01-25
    • 2018-10-02
    • 2020-07-19
    • 2018-07-09
    • 1970-01-01
    • 2018-08-27
    • 2017-02-25
    相关资源
    最近更新 更多