问题标签 [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.

0 投票
1 回答
7936 浏览

angular - 如何在 rxjs6 中导入 ErrorObservable 或 _throw?扔进rxjs

我正在迁移到 rxjs 6.0.0-ucandoit-rc.6。在5.5.2ErrorObservable用来创建错误的 observable 的版本中。

我使用的是这里推荐的方式:https ://github.com/ReactiveX/rxjs/blob/master/doc/pipeable-operators.md

因为 throw 是一个关键词,你可以在 import { _throw } from 'rxjs/observable/throw' 之后使用 _throw。

但是,不再推荐在 rxjs6 中导入这种方式。

如何导入_throw或正确的方法是什么ErrorObservable

0 投票
4 回答
430 浏览

angular - 如何正确过滤角度数组

我有一个从后端拉数组的服务冰,我需要根据 ID 从数组中获取单个项目,如何在 Angular 中执行此操作?

在此处输入图像描述

我正在寻找如何专门使用 angulars pipeable 运算符来做到这一点。如果没有正确完成,过滤器往往会阻止一切正常工作而不会引发错误。我可以获得行信息,但我无法定位我获得的属性"Cannot read property 'id' of undefined"

0 投票
3 回答
11338 浏览

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 函数供参考:

0 投票
0 回答
181 浏览

angular - 订阅可管道运算符时的 RxJS 类型问题

我正在尝试在我的角度项目中使用 RxJS 管道运算符。我有一个实现如下。

在上面的示例中,我使用 typeresponse正确输入了JsendResponse类型。但是当我使用pipe运算符时,response没有正确输入,我的 IDE 告诉我TS2339: Property 'data' does not exist on type {}.

可能是什么原因?提前致谢。

0 投票
3 回答
1734 浏览

rxjs - 未使用 zip 调用 RxJS 管道

我正在压缩三个 observable,三个 observable 中的每一个都有自己的“成功”回调,使用.pipe(tap() => {...});. 当所有三个 observables 都没有错误地执行时,这可以正常工作,但是如果 observables 之一出错,那么所有的 tap 方法都不会执行。如果该 observable 成功运行,我怎样才能让 tap 方法始终执行?

0 投票
1 回答
4797 浏览

angular - 从 NGRX/RXJS 中的组件完成第一个操作后调度第二个操作

我是在我的角度应用程序中使用 NGRX/RXJS 的新手,我有一种情况,我必须从我的组件中调度一个操作,如果属性为空,它会从 API 获取数据并更新 Store_1 并设置一个属性,然后调度另一个操作,该操作使用来自 Store_1 的数据在 Store_2 中执行某些功能,并在操作 1 完成后更新状态并填写“pluralconfig”。这是我想出的代码,但我不认为/相信这是最有效的方法,如果我正确使用运算符。

0 投票
1 回答
383 浏览

rxjs - 只有在使用 Pipeable Operators 时才有副作用?

我正在重写我的一些代码以使用可管道运算符代替“补丁”运算符,我对何时使用pipe()以及如何订阅管道Observable以“激活”它有点困惑,如果我只想要副作用?

例如,我有这个代码:

我在这里感到困惑,因为我想我想这样做this.messageService.getMessages(messageType).pipe(...),所以我得到了一个Observable返回并分配给this.messages$但那不会执行,因为我没有subscribe()'d。但如果我这样做.pipe(...).subscribe(),它会返回一个Subscription对象,这不是我想要的。

我应该在这里做什么?

0 投票
2 回答
412 浏览

rxjs - 如何在 rxjs 中将操作数据传递到可管道操作符流下游?

我有一种情况,我想在第三级操作中访问操作有效负载。我可以在 lettable 操作符中做这样的事情,但是我怎么能用 pipeable 操作符做同样的事情呢?

这是我的代码,

0 投票
2 回答
1026 浏览

rxjs - RXjs 6 使用 jasmine 进行回调测试

这是一个简单的 post 函数,我可以在 jasmine 中对成功和 catchError 进行单元测试。是否可以在茉莉花中测试最终确定?即在finalize中,我们可以期望加载器关闭吗?

在敲定中,我正在关闭装载机。我需要对要在 finalize 中调用的关闭加载程序进行单元测试。

0 投票
3 回答
285 浏览

javascript - 防止在 RxJS 中过早完成异步管道操作符

我正在使用 RxJS 6 创建可管道操作符complete(),并且不清楚当操作是异步时如何观察观察者。

对于同步操作,逻辑很简单。在下面的示例中,来自源的所有值Observable都将传递给observer.next(),然后observer.complete()被调用。

但是,对于异步操作,我有点不知所措。在下面的示例中,异步操作由对 的调用表示setTimeout()。显然,observer.complete()任何值传递给observer.next().

所以问题是:什么是惯用的 RxJS 方法,以便observer.complete()仅在所有值都异步传递给之后才进行调用observer.next()?我应该手动跟踪待处理的呼叫还是有更“被动”的解决方案?

(请注意,上面的示例是对我的实际代码的简化,并且调用setTimeout()旨在表示“任何异步操作”。我正在寻找一种通用方法来处理可管道运算符中的异步操作,而不是关于如何处理的建议处理 RxJS 中的延迟或超时。)