繁体   English   中英

Angular rxjs:方法不等待 promise 完成

[英]Angular rxjs: method does not wait for promise to finish

我有一个方法:

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 我认为这是因为内部的嵌套循环。

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

这是因为.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;
}

在方法 findByEmail() 中不返回 promise。

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

return await this.findAll().toPromise()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM