- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 RxJS shareReplay()
可观察对象( courses$
)上的运算符,以在其他两个可观察对象( beginnerCourses$
Và advancedCourses$
)之间共享可观察流。它工作正常,成功时在两个可观察对象之间共享单个 API 调用响应。
但是,当涉及到错误时,这些 observable 不会共享错误,并且在浏览器控制台中会看到错误被抛出两次。没有 shareReplay()
运营商也分享错误?这是预期的行为吗?
const http$ = createHttpObservable('/api/courses');
const courses$ = http$
.pipe(
map(res => res['payload'] ),
shareReplay(),
catchError(err => {
return throwError(err);
})
);
this.beginnerCourses$ = courses$
.pipe(
map(courses => courses
.filter(course => course.category === 'BEGINNER')));
this.advancedCourses$ = courses$
.pipe(
map(courses => courses
.filter(course => course.category === 'ADVANCED')));
}
1 Câu trả lời
当 observable 抛出错误时,这是预期的行为,shareReplay() 将尝试重新订阅/重新执行源
你可以试试这个来验证
const a=defer(()=>{
console.log('run')
return throwError(new Error('Error'))
}).pipe(shareReplay())
a.subscribe(console.log,console.error,()=>console.log('complete'))
a.subscribe(console.log,console.error,()=>console.log('complete'))
publishReplay(1),refCount()
反而
关于RxJS:即使在源 observable 上使用 `shareReplay()`, `throwError()` 也会为每个 observable 单独执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61884807/
首先,我要明确一点,我知道 Rx throwError 运算符和 JS 的 throw 关键字的区别。我只是想知道为什么要使用 throwError 运算符?我通过创建一个新的 observable
正如预期的那样,以下代码在 5 秒后发出 42: const valueObservable = of(42).pipe(delay(5000)); valueObservable.subscribe
我创建了一个类并尝试调用一个方法,但是在我的 错误日志 , 我收到回复 "Uncaught Error: Call to undefined method Customersss::throwErro
我正在为一个函数编写测试,并且必须触发该函数的 .catch 部分,但 Jasmine 的 spy 出于某种原因不能这样做。待测方法: foo(){ doStuff() .catch((error)
Angular 文档谈到了一个“throwError”类,其导入语句如下所示 import { Observable, throwError } from 'rxjs'; 但我的编译器无法找到该类,并
显然 throwError(error)现在已弃用。 VS Code 的 IntelliSense 建议 throwError(() => new Error('error') . new Error
我正在尝试为 Node.js 构建一个简单的登录模块。我正在尝试以 TDD 方式进行操作,但我对它还是陌生的,所以任何有助于我更好地理解它的提示或资源都会很棒。 当我查询包含无效数据的数据库时,我的问
我想在我的订阅者上使用第二个参数(错误)但不起作用。 我的 Observable 代码: return Observable.create(obs => { cognitoidentityserv
目标:为服务器错误和应用程序错误(在 Typescript 代码中生成)提供全局错误处理程序。 如何:从同一工作空间内的 lib 项目中提供自定义 ErrorHandler。这是我的库结构: 我有以下
我正在使用 RxJS shareReplay()可观察对象( courses$ )上的运算符,以在其他两个可观察对象( beginnerCourses$ 和 advancedCourses$ )之间共
Tôi là một lập trình viên xuất sắc, rất giỏi!