问题标签 [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 投票
4 回答
225 浏览

angular - GAPI 和 Angular 7 问题

我要求使用 gapi 谷歌驱动器:

然后我尝试在组件中显示这些数据:.ts 文件ngOnInit

和 html 文件:

问题是data$总是空的。我添加debuggermap检查那里可能有问题,但它永远不会map发挥作用。从响应中,我得到 2 个文件,所以res.result.files不是空的;

0 投票
2 回答
596 浏览

angular - 可观察的最佳实践

在我当前的项目中,我有一个可观察的返回值,我必须根据可观察的返回值更新我的局部变量。

我看到了两种方法,要么直接订阅我的 observable,要么使用 pipable 运算符。

根据您的经验/知识,最佳做法是什么?

第一种方法(直接订阅):

第二种方法(使用 pipable 运算符):

0 投票
1 回答
150 浏览

rxjs - 使用 filter() 运算符过滤值时触发副作用

我正在处理在 debounceTime() 之后触发的用户名搜索输入。我还过滤掉了值。如果值被过滤(例如设置错误消息和停止加载程序),我想触发一些副作用。

我现在通过使用 tap() 并检查我稍后在 filter() 函数中检查的相同谓词来实现这一点。我觉得这很糟糕/有更合适的方法来实现这一点。

如您所见,我在 filter() 上使用它们之前使用 tap() 明确检查完全相同的条件。是否有操作员/不同的模式可以让我以更简洁的方式实现这一目标?

0 投票
1 回答
7833 浏览

angular - RxJS / Angular Observables 使用 1 个或多个管道?

具有以下内容(只是一个简单的示例):

为什么我应该使用 1 个管道?

对我来说,在第一种情况下,代码更美观、更易读。但不知道这是否会影响行为。

0 投票
1 回答
293 浏览

rxjs - `withLatestFrom` - 使用 observable 实现时抛出错误

我正在尝试ngrx使用运算符集成缓存rxjs withLatestFrom。但得到一个错误:

有人更正我的代码吗?

这是我的代码:

0 投票
3 回答
2084 浏览

angular - 在 RxJS pipable 操作符之间传递数据的最佳方式?

除了在 RxJS 的下一个 pipable 运算符中获取其响应数据之外,我还想传递 URL。您认为实现这一目标的最明智的方法是什么?提前致谢。

这是一个例子。 https://stackblitz.com/edit/angular-rxjs-passing-data-to-next-operator-question

我尝试了一些运算符,但找不到合适的运算符。(实际上,我什至不知道为什么传递返回 observablemergeMap的函数会导致在 next 运算符中获取数据作为函数的参数......)

我希望在 pipable 运算符中获得 url 及其响应数据。

0 投票
1 回答
273 浏览

rxjs6 - rxJS 中的 last 和 publishLast 运算符有什么区别?

我正在尝试从可观察到的中提取最后一个发出的值。但是 rxJS 有两个运算符last()publishLast()

rxJS 中的 last 和 publishLast 运算符有什么区别?

0 投票
1 回答
114 浏览

rxjs - 即使底层 observable 抛出错误,RxJS 也不会在映射时抛出错误

我有一个网络调用,其中 api 可能会引发 400 错误。我想优雅地处理这件事。

现在我这样做如下 -

但我更喜欢使用 Observable.map 运算符。Observable.map 的问题是当 api 抛出 400 时,整个 observable 进入错误模式。

我想防止这种情况发生,因为这个 get 调用正在与其他调用的 forkJoin 中使用。失败将意味着下面的整个 forkJoin 失败

0 投票
3 回答
2561 浏览

javascript - 如何防止多个http请求同时触发

我有一个对象数组。对于每个对象,我需要触发一个异步请求(http 调用)。但我只想同时运行一定数量的请求。此外,如果我可以在所有请求完成后有一个同步点来执行某些代码,那将是很好的(但不是必需的)。

我尝试过以下建议:

使用 RxJS 一次限制请求数

如何限制flatMap的并发?

并行触发异步请求,但使用 rxjs 按顺序获取结果

还有更多......我什至尝试制作自己的运营商。

要么这些页面上的答案太旧而无法使用我的代码,要么我无法弄清楚如何将所有内容放在一起,以便所有类型都能很好地适应。

这是我到目前为止所拥有的:

编辑1: 好的,我想我们到了!随着Juliuspschild的回答(两者似乎同样有效),我设法限制了请求的数量。但现在它只会发射第一批 4 个,而不会发射其余的。所以现在我有:

我做错了subscribe()什么吗?

顺便说一句:mergeMapwithresultSelector参数已被弃用,所以我mergeMap没有使用它。此外, 的objmergeMap不可见tap,所以我不得不使用tap' 参数

编辑2:

确保你的观察者完成!(花了我一整天)

0 投票
0 回答
74 浏览

angular - 使用可管道操作符并仅订阅“内部”可观察对象

假设您有以下代码:

我在另一个组件中得到了这个转换后的 Observable,我订阅了它。

深入研究 Rxjs 文档,我们可以看到使用可管道运算符转换一个 Observable,然后订阅“结果”可观察对象也订阅“起源”可观察对象。

Pipeable Operator 本质上是一个纯函数,它将一个 Observable 作为输入并生成另一个 Observable 作为输出。订阅输出 Observable 也会订阅输入 Observable。

我的问题来自项目中提供的单元测试未能完成