我正在尝试使用Angular2在Firebase数据库的节点上获得 update 操作的结果。 此方法在名为 arbitro.service.ts 的服务类中执行。
此类具有 items 属性,该属性允许在Firebase数据库上执行获取,插入和更新操作:
items: FirebaseListObservable<any[]>;
用于在 Arbitro 记录上执行更新的代码如下所示:
editarArbitro(arbitro: Arbitro): void {
this.items.update(arbitro.id, arbitro);
}
此方法接收 Arbitro 类的实例作为参数,并在Firebase数据库中执行更新。
通过分析适用于 update 操作的方法,我发现了 then 方法。 我附加了一个捕获文件,其中显示了 then 实施所需的参数。
then方法的返回值是一个对象类型:
firebase.Promise<any>
正如我调查的那样,此 Promise 元素返回数据库上交易结果的代码。
我的问题是: 是否可以使用此 Promise 元素来确定事务是成功结束还是失败? 我应该如何处理更新功能的返回?
致谢!
答案 0 :(得分:2)
如Doug所言,Promise可能导致两种状态:操作成功完成,在这种情况下,Promise已解决 ,并且调用了其then()
回调,或者操作失败,其中的承诺被被拒绝,并且其catch()
回调被调用。
因此,您可以通过以下两种方式处理这两种情况:
this.items.update(arbitro.id, arbitro)
.then(function() {
console.log("Update completed successfully");
})
.catch(function(error) {
console.log("Update failed: "+error);
});