【问题标题】:firebase thenable reference return handlingfirebase thenable 参考返回处理
【发布时间】:2018-08-16 14:10:06
【问题描述】:

我正在使用 angularfire2 并进行推送调用来存储对象。如下所示:

点击处理程序

assignCode(){
    this.ddlSvc.assignCoupon(this.selItem.key, coupon).then(
      (resp) =>  {
                      console.log("user created with:" + resp)
                      const alert = this.core.createAlert('Confirmation', 'Coupon Assgined to customer!')
                      alert.present()

                 }
    )
  }

角度服务调用 firebase

assignCoupon(key:string, coupon:Coupon){
    return this.db.list('/users/' + key + '/coupons').push(coupon)
  }

当调用客户端用户具有推送到该节点所需的权限时,它可以正常工作。但是,我们正在测试调用客户端没有权限的情况。目前,当我们触发这个案例时,我们会以一种非常丑陋的方式在 UI 上得到所有错误,而不是一个很好的弹出窗口,因为我们没有处理它。那么,我们如何处理错误部分呢?因为它是一个 thenable 引用,所以点击处理函数没有 . “.catch”来处理。

【问题讨论】:

    标签: typescript firebase-realtime-database angularfire2


    【解决方案1】:

    如果您转到 ThenableReference 的定义(在 Visual Studio Code 中,您可以按 Ctrl-T,然后键入 ThenableReference),您应该会看到类似 this 的内容:

      interface ThenableReference
        extends firebase.database.Reference,
          PromiseLike<any> {}
    

    我们关心的部分是PromiseLike&lt;any&gt;。如果你跳到那个定义,你应该看到this:

    interface PromiseLike<T> {
        /**
         * Attaches callbacks for the resolution and/or rejection of the Promise.
         * @param onfulfilled The callback to execute when the Promise is resolved.
         * @param onrejected The callback to execute when the Promise is rejected.
         * @returns A Promise for the completion of which ever callback is executed.
         */
        then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): PromiseLike<TResult1 | TResult2>;
    }
    

    请注意,then 接受可选的第二个回调,该回调会在出现错误时调用。您应该可以使用它来代替 catch 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-28
      • 2021-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多