[英]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.