作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我使用 async
管道时,我试图避免创建多个请求。我有以下请求从 api 获取用户
getUser() {
this._user = this.http.get<User>(environment.baseAPIUrl + 'user')
.pipe(
tap((user: User) => {
// login successful if there's a jwt token in the response
console.log(user);
this.setIsVerified(user.verified);
this.userReady = true;
}),
catchError((error: HttpErrorResponse) => {
console.log(error.statusText);
if (error.status === 403) {
this.logout();
}
return throwError(error.error);
}
))
.publishLast()
.refCount();;
}
但是当我尝试运行该应用程序时出现以下错误:
ERROR TypeError: this.http.get(...).pipe(...).publishLast is not a function
我试着添加从 'rxjs/operators' 导入 {catchError, tap, publishLast};
但问题仍然存在。
我用 Angular 6 和"rxjs": "^6.1.0"
最佳答案
从 RxJS v6.x 开始,您需要将 publishLast()
作为 pipe
的参数(argument),如下所示:
getUser() {
this._user = this.http.get<User>(environment.baseAPIUrl + 'user')
.pipe(
tap((user: User) => {
// login successful if there's a jwt token in the response
console.log(user);
this.setIsVerified(user.verified);
this.userReady = true;
}),
catchError((error: HttpErrorResponse) => {
console.log(error.statusText);
if (error.status === 403) {
this.logout();
}
return throwError(error.error);
}
),
publishLast()
)
.refCount();;
}
您不应该像在 RxJS v5.0 中那样链接 publishLast()
。
关于javascript - Angular - .publishLast 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50924128/
当我使用 async 管道时,我试图避免创建多个请求。我有以下请求从 api 获取用户 getUser() { this._user = this.http.get(environment.b
在我看来,我对 RX 函数有很好的“感觉”——我使用了其中的许多函数,或者可以想象其他函数如何有用——但我找不到 .Prune 函数的位置。我知道这是对 AsyncSubject 的多播,但这在实际场
我正在 Angular 应用程序中实现缓存 HTTP 结果。据我所知,以下两个代码都有效,但我需要知道它们是否在做完全相同的事情,还是我遗漏了一些重要的东西? 最后发布 getPosts() {
我是一名优秀的程序员,十分优秀!