Angular提供了一个可观察的对象,它在任何时候被调用时都会做一些事情



我有一个名为UserProvider的提供程序,它公开了一个Angular http observable,用于更新服务器上的用户,例如:

export class UserProvider = {
user: User;
update(params): Observable<User> {
return this.http.patch<User>(`${API_ENDPOINT}/users/this.user.id`, params);
}
}

现在,httppatch请求返回服务器上更新的用户。我想在每次执行update()可观察时将其分配给this.user

请注意,我并不是想在调用方更新用户。我想公开一个可观察的,它在订阅时会自动这样做。

您可以pipe您的请求,并使用tap运算符将响应分配给user属性。这将形成一个链,您仍然可以订阅observable,但现在每次this.user = response都会被执行。

import { tap } from 'rxjs/operators';
export class UserProvider = {
user: User;
update(params): Observable<User> {
return this.http.patch<User>(`${API_ENDPOINT}/users/this.user.id`, params)
.pipe(tap(response => this.user = response));
}
}

相关内容

最新更新