我正在使用inApp购买,如果由于某种原因我无法从谷歌或iOS应用商店检索产品信息,我想将UI更改为“不可用”。
ionViewDidEnter() {
this.platform.ready().then(async () => {
firebase.auth().onAuthStateChanged(async user => {
this.currentUser = user;
});
this.unavailable = await this.setupProducts();
console.log('available', this.unavailable);
});
}
setupProducts(): Promise<boolean> {
let productWWHS: string;
let productISA: string;
if (this.platform.is('ios')) {
productWWHS = 'prodID';
productISA = 'prodID';
} else if (this.platform.is('android')) {
productWWHS = 'prodID';
productISA = 'prodID';
}
this.inAppPurchase.ready(() => {
this.products.push(this.inAppPurchase.get(productWWHS));
this.products.push(this.inAppPurchase.get(productISA));
if (!this.products[0]) {
return true;
}
});
return false;
}
我在这个方法中做了一些错误的事情,它有一个错误:'boolean‘类型不能赋值给'Promise’类型
我想以某种方式断言,inAppPurchase.get()返回了一些东西,但它没有返回承诺。
有没有更好的方法来做这件事?
任何帮助都将不胜感激。
发布于 2021-04-07 01:38:33
要修复键入错误,需要将函数定义为async
async setupProducts(): Promise<boolean> {
...
return false;
}
请注意,来自this.inAppPurchase.ready(() => {...})
的true
值不会从setupProducts()
返回。它将从匿名函数() => {...}
返回,不会影响任何内容。
你可能需要像这样的东西
async setupProducts(): Promise<boolean> {
...
await this.inAppPurchase;
this.products.push(this.inAppPurchase.get(productWWHS));
this.products.push(this.inAppPurchase.get(productISA));
if (!this.products[0]) {
return true;
}
return false;
}
如果this.inAppPurchase
是一个函数而不是一个getter,不要忘记()
。
https://stackoverflow.com/questions/66973481
复制相似问题