角rxjs:方法不等待诺言完成

时间:2020-05-11 01:12:02

标签: angular rxjs

我有一个方法:

category.json

调用此方法:

CompressContent

当我调用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[]>; } 。我认为这是因为内部存在嵌套循环。

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

直接返回“等待”前面,如下所示。

return await this.findAll().toPromise()