0

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

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

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

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

4

1 回答 1

0

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

      @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 */
});
于 2019-01-16T14:19:08.317 回答