如何解决在不将 snapshotChanges() 转换为 promise 的情况下,此方法的任何解决方法?
我想返回cartIdFire,但它返回undefined,因为快照方法是返回可观察的
那么,有什么解决方法可以在不将快照方法转换为 promise 的情况下返回 cartIdFire 吗?
private async getServer()
{
this.db.list('/shopping-carts/').snapshotChanges()
.subscribe(x => this.cartIdFire = x);
return cartIdFire;
}
private async getOrCreateCartId() //to create a cartid or acceess the cartid
{
let cartId = localStorage.getItem('cartId'); //to create a cartid or acceess
if(cartId)
{
return cartId;
}
this.id = await this.getServer();
console.log(this.id);
console.log(this.cartIdFire); //it gives undefined
if(this.cartIdFire)
{
localStorage.setItem('cartId',result.key);
return this.cartIdFire;
}
let result = await this.create();
localStorage.setItem('cartId',result.key);
return result.key;
}
所以我无法从 getServer() 方法返回订阅者。因为我必须保存
本地存储中的cartFireId。
解决方法
在这种情况下,await this.getServer()
不起作用,它不会等待被解决,它只在 Promise 中起作用,而不在 Observable 中起作用,它在 subscribe 内解决
一个简单的解决方案是,在将 Observable 转换为 Promise 的 getServer()
方法中,使用 toPromise()
并返回此值
private async getServer()
{
return this.db.list('/shopping-carts/').snapshotChanges().toPromise()
}
并在 cartIdFire
方法中获取 getOrCreateCartId()
this.cardIdFire = await this.getServer()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。