首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >类型“boolean”不能赋值给类型“Promise<boolean>”

类型“boolean”不能赋值给类型“Promise<boolean>”
EN

Stack Overflow用户
提问于 2021-04-07 01:22:33
回答 1查看 1.2K关注 0票数 0

我正在使用inApp购买,如果由于某种原因我无法从谷歌或iOS应用商店检索产品信息,我想将UI更改为“不可用”。

代码语言:javascript
复制
  ionViewDidEnter() {
    this.platform.ready().then(async () => {
      firebase.auth().onAuthStateChanged(async user => {
        this.currentUser = user;
      });
      this.unavailable = await this.setupProducts();
      console.log('available', this.unavailable);
    });
  }

代码语言:javascript
复制
  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()返回了一些东西,但它没有返回承诺。

有没有更好的方法来做这件事?

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-07 01:38:33

要修复键入错误,需要将函数定义为async

代码语言:javascript
复制
async setupProducts(): Promise<boolean> {
...
return false;
}

请注意,来自this.inAppPurchase.ready(() => {...})true值不会从setupProducts()返回。它将从匿名函数() => {...}返回,不会影响任何内容。

你可能需要像这样的东西

代码语言:javascript
复制
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,不要忘记()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66973481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档