首页 > 解决方案 > 根据承诺结果返回布尔值

问题描述

我在处理承诺时感到困惑。我有一个返回布尔值的函数,关于承诺的结果是什么(它是 mobx 商店操作的一部分)

所以在这里,如果长度大于零,我想返回 true,否则返回 false。但是当然,在 promise 得到解决之前,会返回 false

@action
  public isUserAdmin(): boolean {
    this.user!.getIdTokenResult().then((idTokenResult) => {
      return idTokenResult.groups.length > 0;
    });
    return false;
  }

我对使用等待、异步或都不使用它们感到困惑

标签: reactjspromisees6-promisemobx-reacttsx

解决方案


遵循这个答案似乎不可能直接从函数返回布尔值,因此更改为

      @action
      public isUserAdmin(): Promise<boolean> {
-ret-->   return this.user!.getIdTokenResult()
          .then((idTokenResult) => {
            return idTokenResult.groups.length > 0;
          })
          .catch((e) => {
            return false;
          });
      }

然后在组件内部得到它

  myStore!.isUserAdmin().then((result) => {
  /* and this result is wanted boolean */
});

推荐阅读