【问题标题】:return Boolean according to promise result根据承诺结果返回布尔值
【发布时间】:2019-06-10 14:04:49
【问题描述】:

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

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

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

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

【问题讨论】:

  • @trincot 如果问题至少有被接受的答案,请标记为重复,否则,有数百个关于承诺的问题
  • 重复标记有效。目的是尽量减少有关承诺的重复问题的数量。所引用的问题不需要有一个可接受的答案(无论如何这是提问者的主观选择)。事实上,这只是这个 more generic Q&A 的一个特例,其中接受的答案有一个关于承诺的具体案例的部分。
  • @trincot 我不认为这是重复的,不是吗? stackoverflow.com/questions/68520739/…

标签: reactjs promise es6-promise mobx-react tsx


【解决方案1】:

按照这个answer 似乎不可能直接从函数返回布尔值,因此更改为

      @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 */
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-06
    • 1970-01-01
    相关资源
    最近更新 更多