【问题标题】:Angular rxjs: method does not wait for promise to finishAngular rxjs:方法不等待承诺完成
【发布时间】:2020-05-11 01:12:02
【问题描述】:

我有一个方法:

public async findByEmail(email: string): Promise<User> {
    await this.findAll().toPromise().then(users => {
        users.forEach(user => {
            if (user.email === email) {
                console.log(user);
                return of(user);
            }
        });
    });
    return null;
}

调用此方法:

  public findAll(): Observable<User[]> {
    return this.httpClient.get(this.userUrl) as Observable<User[]>;
  }

当我调用findByEmail 方法时,我得到null。我认为这是因为里面的嵌套循环。

如何返回用户(或承诺)的实例

【问题讨论】:

    标签: angular rxjs


    【解决方案1】:

    这是因为.forEach 方法没有返回任何东西。尝试改用.filter

    public async findByEmail(email: string): Promise<User> {
      const users = await this.findAll().toPromise();
      const withSameEmail = users.filter(user => user.email === email);
      return withSameEmail;
    }
    

    【讨论】:

      【解决方案2】:

      在 findByEmail() 方法中不返回承诺。

      直接在 'await' 前面返回,如下所示。

      return await this.findAll().toPromise()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-17
        • 2018-03-05
        • 2016-10-16
        • 2022-11-19
        • 1970-01-01
        • 2020-05-15
        相关资源
        最近更新 更多