问题标签 [rxjs-pipeable-operators]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angular - 如何在 rxjs6 中导入 ErrorObservable 或 _throw?扔进rxjs
我正在迁移到 rxjs 6.0.0-ucandoit-rc.6
。在5.5.2
我ErrorObservable
用来创建错误的 observable 的版本中。
我使用的是这里推荐的方式:https ://github.com/ReactiveX/rxjs/blob/master/doc/pipeable-operators.md
因为 throw 是一个关键词,你可以在 import { _throw } from 'rxjs/observable/throw' 之后使用 _throw。
但是,不再推荐在 rxjs6 中导入这种方式。
如何导入_throw
或正确的方法是什么ErrorObservable
?
angular - 使用 RxJs Pipe 将 Observable 减少到不同的类型
我有一个Observable<Recipe[]>
我想简化为不同类的数组ChartData[]
以用作高图(列和饼图)的数据源。
我正在尝试使用 RxJS 管道运算Observable<Recipe[]>
符对我的数据调用 reduce 运算符,但我无法让它工作?reduce
操作员不会在我的以下项目中迭代它们是Observable<Recipe[]>
我的尝试:
getAllRecipes()
返回Observable<Recipe[]>
this.chartData$
是Observable<ChartData[]>
我正在尝试将其减少到ChartData[]
. 我已经能够在subscribe
操作员中做到这一点,并且图表显示了预期的数据,但我认为我应该能够作为一个可管道操作员来做到这一点?这是作为订阅的一部分完成的减少:
我曾尝试subscribe
在可管道中使用代码,reduce
但我收到编译错误,指出该方法需要Recipe[]
该值。但是,如果我使用数组,那么我只能从 Observable 中获取第一个元素(或者我只是获取 Observable 并且需要对此做些什么?)
这是可能的,还是我对可管道操作员应该如何在 Observable 上工作的思考过程是错误的?
以下是模型和 createOrFindAuthor 函数供参考:
angular - 订阅可管道运算符时的 RxJS 类型问题
我正在尝试在我的角度项目中使用 RxJS 管道运算符。我有一个实现如下。
在上面的示例中,我使用 typeresponse
正确输入了JsendResponse
类型。但是当我使用pipe
运算符时,response
没有正确输入,我的 IDE 告诉我TS2339: Property 'data' does not exist on type {}
.
可能是什么原因?提前致谢。
rxjs - 未使用 zip 调用 RxJS 管道
我正在压缩三个 observable,三个 observable 中的每一个都有自己的“成功”回调,使用.pipe(tap() => {...});
. 当所有三个 observables 都没有错误地执行时,这可以正常工作,但是如果 observables 之一出错,那么所有的 tap 方法都不会执行。如果该 observable 成功运行,我怎样才能让 tap 方法始终执行?
angular - 从 NGRX/RXJS 中的组件完成第一个操作后调度第二个操作
我是在我的角度应用程序中使用 NGRX/RXJS 的新手,我有一种情况,我必须从我的组件中调度一个操作,如果属性为空,它会从 API 获取数据并更新 Store_1 并设置一个属性,然后调度另一个操作,该操作使用来自 Store_1 的数据在 Store_2 中执行某些功能,并在操作 1 完成后更新状态并填写“pluralconfig”。这是我想出的代码,但我不认为/相信这是最有效的方法,如果我正确使用运算符。
rxjs - 只有在使用 Pipeable Operators 时才有副作用?
我正在重写我的一些代码以使用可管道运算符代替“补丁”运算符,我对何时使用pipe()
以及如何订阅管道Observable
以“激活”它有点困惑,如果我只想要副作用?
例如,我有这个代码:
我在这里感到困惑,因为我想我想这样做this.messageService.getMessages(messageType).pipe(...)
,所以我得到了一个Observable
返回并分配给this.messages$
但那不会执行,因为我没有subscribe()
'd。但如果我这样做.pipe(...).subscribe()
,它会返回一个Subscription
对象,这不是我想要的。
我应该在这里做什么?
rxjs - 如何在 rxjs 中将操作数据传递到可管道操作符流下游?
我有一种情况,我想在第三级操作中访问操作有效负载。我可以在 lettable 操作符中做这样的事情,但是我怎么能用 pipeable 操作符做同样的事情呢?
这是我的代码,
rxjs - RXjs 6 使用 jasmine 进行回调测试
这是一个简单的 post 函数,我可以在 jasmine 中对成功和 catchError 进行单元测试。是否可以在茉莉花中测试最终确定?即在finalize中,我们可以期望加载器关闭吗?
在敲定中,我正在关闭装载机。我需要对要在 finalize 中调用的关闭加载程序进行单元测试。
javascript - 防止在 RxJS 中过早完成异步管道操作符
我正在使用 RxJS 6 创建可管道操作符complete()
,并且不清楚当操作是异步时如何观察观察者。
对于同步操作,逻辑很简单。在下面的示例中,来自源的所有值Observable
都将传递给observer.next()
,然后observer.complete()
被调用。
但是,对于异步操作,我有点不知所措。在下面的示例中,异步操作由对 的调用表示setTimeout()
。显然,observer.complete()
将在任何值传递给observer.next()
.
所以问题是:什么是惯用的 RxJS 方法,以便observer.complete()
仅在所有值都异步传递给之后才进行调用observer.next()
?我应该手动跟踪待处理的呼叫还是有更“被动”的解决方案?
(请注意,上面的示例是对我的实际代码的简化,并且调用setTimeout()
旨在表示“任何异步操作”。我正在寻找一种通用方法来处理可管道运算符中的异步操作,而不是关于如何处理的建议处理 RxJS 中的延迟或超时。)